代码之家  ›  专栏  ›  技术社区  ›  aceofspades

用太阳黑子轨道增强Lucene项

  •  1
  • aceofspades  · 技术社区  · 14 年前

    我对Lucene的术语[Boosting][1]查询语法有问题,特别是在Ruby on Rails中,通过sunspot_railsgem。这就是您可以在查询期间指定特定术语的权重,而与特定字段的权重无关。

    sunspot生成的HTML查询使用qf参数指定要按配置搜索的字段,并为查询本身指定q参数。当插入符号被添加到搜索词以指定一个boost(即q=search term^5)时,它不返回任何结果,即使返回的结果没有boost词。

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

    简言之,查询项boosting似乎不与qf指定的字段一起工作。

    我的应用程序调用跨多个字段的搜索,使用与这些字段相关联的各个boost,然后有条件地对查询的各个术语进行boosting。

    有什么见解吗?

    [1] 以下内容: http://lucene.apache.org/java/2_9_1/queryparsersyntax.html#Boosting 任期

    2 回复  |  直到 14 年前
        1
  •  2
  •   outoftime    14 年前

    Sunspot使用dismax解析器进行全文搜索,它避开了通常的Lucene查询语法,而采用了有限的(但用户输入友好的)查询语法,并结合了一组附加参数(如qf),客户端应用程序可以构造这些参数来优化搜索的工作方式。太阳黑子利用 boost_fields 全文DSL中的方法:

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

        2
  •  1
  •   aceofspades    14 年前

    我找到的解决方案是使用DisMax,但是在bq参数中添加一个布尔字符串,其中包含增强的项。