Невозможно выполнить частичный поиск слов в Solr 8.6.0

#solr

#solr

Вопрос:

У меня есть несколько записей со значением _fiscalyear как 2019-2020, но я не могу выполнить поиск по тексту 2019 или 2020. Я могу выполнить поиск 2019-2020.

Запрос, который я использую, является https://solr.xyz:8983/solr/mycore/select?q=2019amp;qf=_fiscalyearamp;defType=edismax

ниже приведена конфигурация _fiscalyear в файле схемы

 
<field name="_fiscalyear" type="text_general" indexed="true" stored="true" required="false" multiValued="false" />

<copyField source="_fiscalyear" dest="text_en"/>
  

Ответ №1:

Добавление

 <filter class="solr.EdgeNGramFilterFactory" minGramSize="2" maxGramSize="15" /> under 

      <analyzer type="index">
  

исправлена ошибка

Комментарии:

1. Это не сработает в 2020 году, не так ли? Если ваш токенизатор еще не включен - , то в итоге вы получите 20 , 201 , 2019 , 2019- , 2019-2 , и т. Д. В качестве токенов, а не 2020 сами по себе.

2. вы правы. Тогда как мне справиться с этим на уровне индексации?

3. использование NGramFilterFactory вместо EdgeNGramFilterFactory решило проблему. Теперь я тоже могу 2020

4. Если вы хотите выполнить поиск только по целому числу (это даст результаты, даже если вы просто выполняете поиск 20 — если это то, что вы хотите, оставьте все как есть), вам было бы лучше использовать tokenizer, который разделяется - , или WordDelimiterGraphFilter, который делает то же самое.