Lucene用sunspot-rails增加了一个词

时间:2010-11-15 16:59:05

标签: ruby-on-rails lucene solr sunspot

我遇到了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一个术语

2 个答案:

答案 0 :(得分:2)

Sunspot使用dismax解析器进行全文搜索,避开常用的Lucene查询语法,支持有限(但用户输入友好)的查询语法,并结合可构造的一组附加参数(如qf)由客户端应用程序调整搜索的工作方式。太阳黑子使用全文DSL中的boost_fields方法为每场增强提供支持:

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

答案 1 :(得分:1)

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