Solr установить больше актуальности в позиции строки
Как я могу сделать так, чтобы Solr установил более релевантность в словах в зависимости от положения строки.
Например, если я ищу "Macbook", первые результаты будут похожи на "Case Logic LAPS-113 13,3-дюймовый ноутбук / MacBook Air" и после "Apple MacBook Pro MD101LL/A 13,3-дюймовый".
Это мое полевое объявление:
<fieldType name="text_pt" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.SynonymFilterFactory" synonyms="lang/index_synonyms.txt" ignoreCase="true" expand="false"/>
<filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_pt.txt" />
<filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="0" splitOnCaseChange="0"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.KeywordMarkerFilterFactory" protected="lang/protwords_pt.txt"/>
<filter class="solr.SynonymFilterFactory" synonyms="lang/synonyms.txt" ignoreCase="true" expand="false"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_pt.txt" />
<filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0" catenateNumbers="0" catenateAll="0" splitOnCaseChange="0"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.KeywordMarkerFilterFactory" protected="lang/protwords_pt.txt"/>
<filter class="solr.SynonymFilterFactory" synonyms="lang/synonyms.txt" ignoreCase="true" expand="false"/>
</analyzer>
</fieldType>
1 ответ
Что, если название продукта было "MacBook/Dell/Lenovo для дешевых ноутбуков", оно содержит Macbook на первой позиции, вы все еще хотите улучшить этот документ?
Я думаю, что вместо этого вам следует попытаться устранить основную причину вашей проблемы, которая заключается в том, как справиться с аксессуарами (такими как "чехол", "батарея", "замок" и т. Д.) Лучше, чем сами продукты.
Очевидный лучший выбор: индексировать поле, в котором указано, является ли документ аксессуаром (я так понимаю, у вас нет этой информации, в противном случае это лучший способ), и добавить те, которые не являются аксессуарами.
Если у вас нет этой информации, вы можете попытаться, оштрафовав документы, которые содержат "типичные" вспомогательные слова. Для этого нужно построить такой список, но это не сложно. Я использовал этот подход с хорошим результатом.