Уточнить результаты поиска для большего количества слов в SOLR - PullRequest
0 голосов
/ 23 сентября 2019

Я хочу добиться более точных результатов поиска, когда пользователь вводит больше слов, используя оператор AND между результатами сострадания токенов.

Я попытался установить qo=AND, но не работает и возвращает результаты, которые содержат только одно из введенных слов.

Например, я использую для поиска поля анализатор, например:

<fieldType name="serch_text" class="solr.TextField">
  <analyzer type="index">
    <tokenizer class="solr.WhitespaceTokenizerFactory"/>
    <filter class="solr.EdgeNGramFilterFactory"/>
    <filter class="solr.ASCIIFoldingFilterFactory"/>
    <filter class="solr.TrimFilterFactory"/>
    <filter class="solr.LowerCaseFilterFactory"/>
  </analyzer>
  <analyzer type="query">
    <tokenizer class="solr.WhitespaceTokenizerFactory"/>
    <filter class="solr.EdgeNGramFilterFactory"/>
    <filter class="solr.ASCIIFoldingFilterFactory" preserveOriginal="true"/>
    <filter class="solr.TrimFilterFactory"/>
    <filter class="solr.LowerCaseFilterFactory"/>
  </analyzer>
</fieldType>

, поэтому для запроса searching:(hel world) Я хочу применить анализатор для каждого слова и сделать AND между результатами.На практике я ожидал что-то вроде этого:

(hel сравнить с h, он, hel, hell, hello) AND (world сравнить с w, wo, ...)

и возвращать результаты, если совпадают оба.

1 Ответ

0 голосов
/ 24 сентября 2019

Аргумент: q.op=AND.

Страница анализа также скажет вам, какие токены генерируются на каждой стороне, так что вывод покажет вам, почему оба входа подвергаются ударам.

Как правило, фильтры NGram (и токенизатор) при индексировании и запросах дают странные результаты (т. Е. Запрашиваемый ад вызовет удар по дыре, поскольку оба сгенерируют токен h)

Обычно вы захотите ngram только при индексации (чтобы получить автозаполнение / начало работы со словами).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...