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 на первой позиции, вы все еще хотите улучшить этот документ?

Я думаю, что вместо этого вам следует попытаться устранить основную причину вашей проблемы, которая заключается в том, как справиться с аксессуарами (такими как "чехол", "батарея", "замок" и т. Д.) Лучше, чем сами продукты.

Очевидный лучший выбор: индексировать поле, в котором указано, является ли документ аксессуаром (я так понимаю, у вас нет этой информации, в противном случае это лучший способ), и добавить те, которые не являются аксессуарами.

Если у вас нет этой информации, вы можете попытаться, оштрафовав документы, которые содержат "типичные" вспомогательные слова. Для этого нужно построить такой список, но это не сложно. Я использовал этот подход с хорошим результатом.

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