有没有方法来提高原词更在使用Solr的同义词?(Is there way to boost orig

2019-07-29 11:16发布

比如我在index_synonyms.txt同义词笔记本电脑,上网本,笔记本电脑

当上网本我想提高原文的同义词更多然后扩大用户搜索? 有没有办法在SynonymFilterFactory指定这个? 例如用原词两次,他的TF将更大

Answer 1:

据我所知,目前还没有办法与现有SynonymFilterFactory做到这一点。 但是,以下是你可以用它来获得此行为的伎俩。

比方说,你的领域被称为title 。 创建另一个领域是这个副本,说title_synonyms 。 现在确保SynonymFilterFactory用作分析仅供title_synonyms (您可以通过使用不同的字段类型为这两个领域做到这一点-比如texttext_synonyms )。 搜索在这两个领域,但提供更高的提振titletitle_synonyms

下面是样本字段类型定义:

    <fieldType name="text" class="solr.TextField">
        <analyzer type="index">
            <tokenizer class="solr.WhitespaceTokenizerFactory"/>
            <filter class="solr.LowerCaseFilterFactory"/>
            <filter class="solr.EnglishPorterFilterFactory" protected="protwords.txt"/>
            <filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
        </analyzer>
        <analyzer type="query">
            <tokenizer class="solr.WhitespaceTokenizerFactory"/>
            <filter class="solr.LowerCaseFilterFactory"/>
            <filter class="solr.EnglishPorterFilterFactory" protected="protwords.txt"/>
            <filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
        </analyzer>
    </fieldType>

    <fieldType name="text_synonyms" class="solr.TextField">
        <analyzer type="index">
            <tokenizer class="solr.WhitespaceTokenizerFactory"/>
            <filter class="solr.SynonymFilterFactory" synonyms="synonyms_index.txt" ignoreCase="true" expand="true"/>
            <filter class="solr.LowerCaseFilterFactory"/>
            <filter class="solr.EnglishPorterFilterFactory" protected="protwords.txt"/>
            <filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
        </analyzer>
        <analyzer type="query">
            <tokenizer class="solr.WhitespaceTokenizerFactory"/>
            <filter class="solr.SynonymFilterFactory" synonyms="synonyms_query.txt" ignoreCase="true" expand="true"/>
            <filter class="solr.LowerCaseFilterFactory"/>
            <filter class="solr.EnglishPorterFilterFactory" protected="protwords.txt"/>
            <filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
        </analyzer>
    </fieldType>

这里有样品的字段定义:

    <field name="title" type="text" stored="false"
           required="true" multiValued="true"/>
    <field name="title_synonyms" type="text_synonyms" stored="false"
           required="true" multiValued="true"/>

复制title字段title_synonyms

<copyField source="title" dest="title_synonyms"/>

如果你正在使用dismax ,你可以给不同的提升这些领域的,像这样:

    <str name="qf">title^10 title_synonyms^1</str>


文章来源: Is there way to boost original term more while using Solr synonyms?