Tom*_*For 14 lucene solr scoring solr-boost
我正在浏览网页寻找索引和搜索框架,并偶然发现索尔.我们绝对需要的功能是根据命中包含的字段来提升结果.
一个小例子:
考虑这样的记录:
<movie>
<title>The Dark Knight</title>
<alternative_title>Batman Begins 2</alternative_title>
<year>2008</year>
<director>Christopher Nolan</director>
<plot>Batman, Gordon and Harvey Dent are forced to deal with the chaos unleashed by an anarchist mastermind known only as the Joker, as it drives each of them to their limits.</plot>
</movie>
Run Code Online (Sandbox Code Playgroud)
我想例如结合title
,alternative_title
和plot
领域进入一个搜索领域,这是不看的Solr/Lucene的文档和教程后,太难了.
然而,我也希望那些受欢迎的电影获得的title
分数高于击中的分数,alternative_title
而那些依次命中的分数应高于该plot
领域的命中率.
有没有办法在XML中表明这种评分,还是我们需要开发一些自定义评分算法?
还请注意,我给出的示例是虚构的,真实数据可能包含100多个字段.
Ken*_*enE 11
这就是Solr的DismaxQueryParser的设计目标.请参阅http://wiki.apache.org/solr/DisMaxRequestHandler
有很多参数,但您需要自定义的主要参数是"qf",这是您指定应搜索哪些字段以及每个字段的提升的方式.因此,如果您希望标题占主导地位,您可以指定以下内容:
标题^ 10 alternative_title ^ 2导演^ 1情节^ 1
作为qf参数的值.您可以通过自定义示例配置和实验来进行设置.
我没有使用Solr,但我使用过Lucene.在看:
http://wiki.apache.org/solr/SolrQuerySyntax
它声明Solr的查询语法是Lucene的超集.在Lucene中,你可以执行每场增强的方法是使用胡萝卜算子后跟一些任意值,即
title:batman^10 alternative_title:batman
在查询时执行此操作的优点是,您可以动态调整提升值以匹配您拥有的任何相关标准.因此,如果10的提升值太高,您可以相应调整它.
如果此功能不是特定于某个搜索而是整个网站。您可以在索引时提升标题。提升为该领域提供了更高的相关性分数,这听起来正是您想要的。
查看此链接:
http://wiki.apache.org/solr/UpdateXmlMessages#Optional_attributes_for_.22field.22