Я сделал следующее определение типа в Solr:
<fieldType name="text_phrase" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<tokenizer class="solr.KeywordTokenizerFactory"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
</analyzer>
</fieldType>
Он должен индексировать значения дословно (без токенизации).
Я добавляю значение «узкие джинсы» в свой индекс.
Когда я запускаю следующий поисковый запрос (URL-адрес декодирован для чтения), я не получаю никаких результатов:
http://myvm:8983/solr/mycore/select?q=*:*&fq=name:("skinny jeans")&wt=json&indent=true&debugQuery=true
Вы можете видеть, что URL-адрес ищет все (*:*) с запросом фильтра для точного значения «джинсы скинни».
Затем я добавляю значение «джинсы» в свой индекс и запускаю аналогичный запрос с
&fq=name:("jeans")
И я нахожу элемент "джинсы".
Так что это работает для одного слова, но не для нескольких слов. С чего бы это? В конце концов, я ищу точное значение. Это заставляет меня подозревать, что KeywordTokenizerFactory делает что-то странное. Может ли кто-нибудь посоветовать, почему из такой базовой настройки не возвращаются результаты?
Спасибо,