Настроить SOLR для поиска документов, если в документе используется множественное число, а единственное число в тексте поиска? - PullRequest
8 голосов
/ 31 января 2012

Я использую solr, настроенный на localhost: 8983 Я в основном использую пример из коробки.Я ввел один документ с именем «Автомобиль», а другой - «Автомобили».

Если я посещу:

http://localhost:8983/solr/select?q=Car

или

http://localhost:8983/solr/select?q=Cars

Я бы ожидал получить оба документа.На данный момент я не знаю.

В теге fields "schema.xml" запись для "name" выглядит так:

"text_general" имеетследующие «анализаторы» (без стеммеров):

<analyzer type="index">
    <tokenizer class="solr.StandardTokenizerFactory"/>
    <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true" />
    <filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
<analyzer type="query">
    <tokenizer class="solr.StandardTokenizerFactory"/>
    <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true" />
    <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
    <filter class="solr.LowerCaseFilterFactory"/>
</analyzer>

Я пытался добавить стеммер к каждому анализатору.Я попытался:

<filter class="solr.PorterStemFilterFactory"/>
<filter class="solr.KStemFilterFactory"/>
<filter class="solr.EnglishMinimalStemFilterFactory"/>

Это делает так, что при поиске «Автомобили» найдется «Автомобиль», но я никогда не смогу найти «Автомобили».

Если возможно найти«Автомобили»?

Любая помощь будет принята с благодарностью.Спасибо.

Ответы [ 2 ]

19 голосов
/ 01 февраля 2012

Возможно, просто добавьте фильтр портера в конце (после LowerCaseFilterFactory):

<filter class="solr.SnowballPorterFilterFactory" language="English" />

Подробнее:

  1. Документы Snowball с примером использования в анализаторе
  2. Анализ языка Solr
  3. Английский (Porter2) алгоритм stemming

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

1 голос
/ 21 июня 2013

Я обнаружил, что переход от text_general к text_en в полях shema.xml решил эту проблему множественности

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