Solr stopwords не работает с поиском по шаблону

У меня проблема с поиском подстановочных знаков и стоп-слов. Я добавил несколько стоп-слов "to", "for", "is" в stopwords.txt. Когда я не делаю поиск по шаблону, он работает отлично.
Запрос -> q=learningObjectTopic:to&rows=1

<response>
<lst name="responseHeader">
<int name="status">0</int>
<int name="QTime">3</int>
<lst name="params">
<str name="q">learningObjectTopic:to</str>
<str name="rows">1</str>
</lst>
</lst>
<result name="response" numFound="0" start="0"/>
</response>

Когда я делаю поиск по шаблону его возвращаемых данных.
Запрос -> q=learningObjectTopic:*to*&rows=1

<response>
<lst name="responseHeader">
<int name="status">0</int>
<int name="QTime">5</int>
<lst name="params">
<str name="q">learningObjectTopic:*to*</str>
<str name="rows">1</str>
</lst>
</lst>
<result name="response" numFound="75" start="0">
<doc>
<str name="id">56f4bc54b2de79277297dcab</str>
<str name="learningObjectId">LO1_SK1_18</str>
<str name="learningObjectTopic">Introduction to Web Development</str>
<str name="category">learningObject</str>
<long name="_version_">1537824533459763200</long>
</doc>
</result>
</response>

Это мой анализатор

<fieldType name="text_general" class="solr.TextField" multiValued="false" positionIncrementGap="100">
    <analyzer type="index">
        <tokenizer class="solr.WhitespaceTokenizerFactory"/>
        <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" />
        <filter class="solr.LowerCaseFilterFactory"/>
 </analyzer>

Что мне требуется, так это то, что "to" не должно совпадать и с подстановочным запросом. Что мне здесь не хватает?

Примечание: learningObjectTopic: искать пропущенные слова "в" в результатах, когда я добавил "в" в стоп-словах, поэтому индексация стоп-слов работает.

1 ответ

Solr StopFilterFactory не является компонентом, учитывающим несколько терминов, и поэтому stopFilterFactory не будет работать для подстановочных запросов. Ссылочная ссылка.

Кроме того, сценарий может быть недействительным. так как, если в индексе есть ключевое слово "Tokyo", то поисковое ключевое слово "to*" должно возвращать этот результат вместо того, чтобы показывать "0", что является неправильным.

Другие вопросы по тегам