1

我在使用 Lucene 的 Term [Boosting][1] 查询语法时遇到问题,特别是在 Ruby on Rails 中通过 sunspot_rails gem。这样您就可以在查询期间指定特定术语的权重,并且与特定字段的权重无关。

sunspot 生成的 HTML 查询使用 qf 参数指定要按照配置搜索的字段,以及查询本身的 q 参数。当插入符号添加到搜索词以指定提升时(即 q=searchterm^5),它不返回任何结果,即使在没有提升词的情况下会返回结果。

另一方面,如果我手动创建一个 HTTP 查询并手动指定要搜索的字段 (q=title_texts:searchterm^5),则会返回结果并且分数似乎会受到提升的影响。

简而言之,查询词提升似乎不能与 qf 指定的字段一起使用。

我的应用程序要求搜索多个字段,使用与这些字段相关联的相应提升,有条件地依次提升查询的各个术语。

有什么见解吗?

[1]: http: //lucene.apache.org/java/2_9_1/queryparsersyntax.html#Boosting a Term

4

2 回答 2

2

Sunspot 使用 dismax 解析器进行全文搜索,它避开了通常的 Lucene 查询语法,转而支持有限的(但用户输入友好的)查询语法与一组可由客户端构造的附加参数(例如 qf)组合应用程序来调整搜索的工作方式。boost_fieldsSunspot 使用全文 DSL 中的方法提供对每个字段提升的支持:

http://outoftime.github.com/sunspot/docs/classes/Sunspot/DSL/Fulltext.html#M000129

于 2010-11-15T19:42:03.977 回答
1

我找到的解决方案是使用 DisMax,但在 bq 参数中添加一个带有提升项的布尔字符串。

于 2010-12-02T02:32:52.537 回答