Кажется, у вас есть стеммер в цепях фильтра, из-за чего продолжение и Непрерывность и сопоставлены с одним и тем же корнем и будут рассматриваться равными.
вы хотите проверить, какой стеммер вы используете, и хотите получить его в зависимости от ваших потребностей. Стандартный портер-стеммер очень агрессивен, и вам могут потребоваться менее агрессивные варианты.
Solr в настоящее время не повышает точное совпадение выше, чем другие термины, которые создали тот же корень.
Одним из вариантов будет иметь два поля в вашей схеме.
Stemmed (title_stemmed) и версия без Stemmed (title - без фильтра stemming)
пример -
schema.xml -
<!-- Without Porter Stemmer -->
<fieldType name="text_non_stemmed" class="solr.TextField" positionIncrementGap="100" autoGeneratePhraseQueries="true">
<analyzer type="index">
<tokenizer class="solr.WhitespaceTokenizerFactory
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
</fieldType>
<!-- With Porter Stemmer -->
<fieldType name="text" class="solr.TextField" positionIncrementGap="100" autoGeneratePhraseQueries="true">
<analyzer type="index">
<tokenizer class="solr.WhitespaceTokenizerFactory
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.PorterStemFilterFactory"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.PorterStemFilterFactory"/>
</analyzer>
</fieldType>
<field name="title" type="text" indexed="true" stored="true" termVectors="false" omitNorms="false"/>
<field name="title_non_stemmed" type="text_non_stemmed" indexed="true" stored="true" termVectors="false" omitNorms="false"/>
<copyField source="title" dest="title_non_stemmed"/>
Вы можете взвесить поля -
solrconfig.xml - изменить обработчик запроса по умолчанию
<requestHandler name="search" class="solr.SearchHandler" default="true">
<lst name="defaults">
<str name="echoParams">explicit</str>
<str name="defType">dismax</str>
<str name="qf">
title_non_stemmed^1 title^0.8
</str>
<str name="q.alt">*:*</str>
<str name="rows">10</str>
<str name="fl">*,score</str>
</lst>
</requestHandler>
так что точное совпадение дает больше очков, чем неточное совпадение, и выглядит выше.
URL -
http://localhost:8983/solr/select/?q=continuing