通过指定的搜索词在顶部提升结果

时间:2011-10-11 07:25:28

标签: solr

我正在使用apache solr 3.1和drupal

如何在搜索字段中指定的顶部提升结果?

搜索字段中的示例,如果用户输入继续,则solr会在顶部显示 Continuity 的文档,并在下方显示继续的文档,我希望显示连续性

继续

http://localhost:8983/solr/select/?q=continuing&qf=title&fl=title%20score&bq=title:continuing ^ 10.0

1 个答案:

答案 0 :(得分:0)

似乎你在过滤器链中有一个词干分析器,由于它继续和连续性并映射到相同的根并且将被视为相等。

你想要检查你正在使用的割线机,并希望根据你的需要得到一个。默认的porter stemmer是非常激进的,你可能想要一个不那么激进的选项。

Solr目前不会比生成相同根的其他术语提高精确匹配 一种选择是在您的架构中有两个字段 Stemmed(title_stemmed)和非Stemmed版本(标题 - 没有词干过滤器)

示例 -

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>

这样精确匹配产生的得分高于非完全匹配,并显得更高。

网址 -

http://localhost:8983/solr/select/?q=continuing