DSE: поиск по шаблону - PullRequest
1 голос
/ 08 мая 2019

В настоящее время я пытаюсь выполнить поиск по шаблону и соответственно отредактировал файл схемы, используя ссылку здесь , я также прочитал следующую ветку и попытался внести необходимые изменения для SOLR и запроса с использованием token(hel*o), но не удалось достичь желаемых результатов поиска. Следовательно, я хотел бы спросить, неверен ли мой подход к поиску по шаблону? Как я заметил, регулярные выражения можно искать с помощью tokenRegex(...) без необходимости изменения схемы.

=== Обновление ===

DSE Version : 6.7.2
Execution code : g.V().hasLabel("person_node").has("name", "Jo*")

Schema Used
----------------
<fieldType class="org.apache.solr.schema.TextField" name="TextWildcard">
  <analyzer type="index">
    <tokenizer class="solr.StandardTokenizerFactory"/>
    <filter class="solr.ReversedWildcardFilterFactory" withOriginal="true" maxPosAsterisk="3" maxPosQuestion="2" maxFractionAsterisk="0.33"/>
    <filter class="solr.EdgeNGramFilterFactory" minGramSize="2" maxGramSize="15"/>
    <filter class="solr.LowerCaseFilterFactory"/>
  </analyzer>
  <analyzer type="query">
    <tokenizer class="solr.StandardTokenizerFactory"/>
    <filter class="solr.LowerCaseFilterFactory"/>
  </analyzer>
</fieldType>

Я хотел бы получить обычный подстановочный запрос, где * означает, что может быть много совпадений непробельных символов, например, Hel * o сможет соответствовать Hello, Heleawo или Helzzzzo.

Кроме того, он также будет работать с? где он соответствует только одному непробельному символу, например Hel? o будет соответствовать Helzo, а не Helzzzo.

1 Ответ

1 голос
/ 08 мая 2019

Ах, хорошо - вы не используете правильную графическую операцию. Чтобы выполнить то, что вы хотите, вам нужно:

Создать поисковый индекс для данного свойства с:

schema.vertexLabel('person_node').index('searchname').search().by('name').asString().add()

Выполнить поиск с помощью:

g.V().hasLabel("person_node").has("name", regex("Jo*"))
...