Я использую Solr Search для поиска моих имен пользователей.Я использовал ngramfilterfactory для индексации, чтобы он искал подстроки.Тем не менее, точное совпадение слов не оценивается выше, чем совпадение подстроки.
Например;У меня есть два имени пользователя: Сара123 , Я Сара .Когда я ищу Сара , все эти документы должны возвращаться, за исключением того, что «Я - Сара» должна быть первой в наборе результатов, поскольку Сара точно соответствует одному из слов.У меня проблемы с этим.Цени любые указатели!
Я использую SOLR 3.5, в моем schema.xml есть следующая соответствующая запись:
<fieldType name="usernames" class="solr.TextField" positionIncrementGap="1">
<analyzer type="index">
<tokenizer class="solr.WhitespaceTokenizerFactory" />
<filter class="solr.WordDelimiterFilterFactory"
generateWordParts="1"
generateNumberParts="1"
catenateWords="1"
catenateNumbers="1"
catenateAll="0"
preserveOriginal="1"
/>
<filter class="solr.NGramFilterFactory" minGramSize="3" maxGramSize="200"/>
<filter class="solr.LowerCaseFilterFactory" />
</analyzer>
<analyzer type="query">
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory" />
</analyzer>
</fieldType>