#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, который делает то же самое.