Solr edismax поиск по шаблону не находит оригинальную строку - PullRequest
4 голосов
/ 23 февраля 2012

У меня есть следующий контент в моем индексе Solr: west indian cherry в поле типа text_en (определение полей см. Ниже).

Когда я ищу с cherr* совпадение найдено.
Также ищите cherri* соответствует слову в документе.
Но поиск по cherry* не не соответствует.

Я подозреваю, что PorterStemFilterFactory для этого, но я не понимаю, почему (анализатор запросов такой же, как анализатор индекса).


пример запроса

/solr/select?defType=edismax&q=cherry*

solrconfig.xml

...
<fieldType name="text_en" class="solr.TextField" positionIncrementGap="100">
  <analyzer type="index">
    <tokenizer class="solr.StandardTokenizerFactory"/>
    <filter class="solr.LowerCaseFilterFactory"/>
    <filter class="solr.EnglishPossessiveFilterFactory"/>
    <filter class="solr.PorterStemFilterFactory"/>
  </analyzer>
  <analyzer type="query">
    <tokenizer class="solr.StandardTokenizerFactory"/>
    <filter class="solr.LowerCaseFilterFactory"/>
    <filter class="solr.EnglishPossessiveFilterFactory"/>
    <filter class="solr.PorterStemFilterFactory"/>
  </analyzer>
</fieldType>
...

полевой анализ

Индекс

org.apache.solr.analysis.StandardTokenizerFactory: cherry
org.apache.solr.analysis.LowerCaseFilterFactory: cherry
org.apache.solr.analysis.EnglishPossessiveFilterFactory: cherry
org.apache.solr.analysis.PorterStemFilterFactory: cherri <-- note the change from cherry to cherri

запрос

org.apache.solr.analysis.StandardTokenizerFactory: cherry
org.apache.solr.analysis.LowerCaseFilterFactory: cherry
org.apache.solr.analysis.EnglishPossessiveFilterFactory: cherry
org.apache.solr.analysis.PorterStemFilterFactory: cherri

1 Ответ

6 голосов
/ 23 февраля 2012

http://wiki.apache.org/solr/AnalyzersTokenizersTokenFilters#Analyzers упоминает -

При поиске с подстановочными знаками и нечетким поиском анализ текста не выполняется. поисковое слово.

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

Поскольку индексированный термин - cherri, поиск по cherry* не будет соответствовать ни одному документу.

...