我对Lucene的术语增强查询语法有一个问题,特别是在Ruby on Rails中通过sunspot_rails gem。这使您可以在查询过程中指定特定术语的权重,而与特定字段的权重无关。
sunspot生成的HTML查询使用qf参数来指定要按照配置进行搜索的字段,以及查询本身的q参数。当将插入符号添加到搜索项以指定boost (即q=searchterm^5)时,它不返回任何结果,即使返回的结果没有boost项也是如此。
另一方面,如果我手动创建一个HTTP查询,并手动指定要搜索的字段(q=title_texts:searchterm^5),则会返回结果,并且分数似乎会受到提升的影响。
简而言之,它看起来好像查询术语提升不能与使用qf指定的字段一起工作。
我的应用程序调用跨多个字段的搜索,使用与这些字段相关联的相应的boosting,有条件地依次对查询的各个术语执行boosting。
有什么见解吗?
1:http://lucene.apache.org/java/2_9_1/queryparsersyntax.html#Boosting a Term
发布于 2010-12-02 10:32:53
我找到的解决方案是使用DisMax,但在bq参数中添加一个包含提升项的布尔字符串。
发布于 2010-11-16 03:42:04
Sunspot使用dismax解析器进行全文搜索,避免使用常用的Lucene查询语法,而是采用有限的(但用户输入友好的)查询语法,并结合一组附加参数(如qf),这些参数可由客户端应用程序构建,以调整搜索的工作方式。Sunspot在全文DSL中使用boost_fields方法提供了对每个字段boost的支持:
http://outoftime.github.com/sunspot/docs/classes/Sunspot/DSL/Fulltext.html#M000129
https://stackoverflow.com/questions/4186844
复制相似问题