【问题标题】:django-haystack field boost - how exactly to use it?django-haystack field boost - 究竟如何使用它?
【发布时间】:2014-04-09 11:36:32
【问题描述】:

我只知道this example 在索引时提高了title 字段的重要性。

具体如何与SearchQuerySet一起使用?
可以使用哪些InputTypes 和运算符(引用、排除、或),它们如何混合使用?
可以使用哪个field lookups,目的是什么?

我正在使用 ElasticSearch 后端。
示例目标:提升标题(不是任何其他字段)以(或至少包含)查询字符串开头的条目。
总体思路:title__startswith=q 以某种方式与content=Raw(q) 结合,这样我们就可以得到后者的所有结果,并在前者的基础上进行提升。

filter(SQ(title__startswith=q) | SQ(content=Raw(q)) 似乎对分数没有影响。
连续的filter(...)s(或&)工作很奇怪:title__startswith 允许标题中出现的东西,即使不是在开头,但会过滤掉那里没有的东西。既不是真正的过滤器,也不是纯粹的提升。

【问题讨论】:

    标签: django boost elasticsearch django-haystack


    【解决方案1】:

    我使用 Whoosh 作为后端。

    在类似的情况下,在使用 boost=1.2 添加 CharField 或 EdgeNgramField 后,我注意到结果列表和结果顺序没有变化。

    我只能通过将模板文件中的标题字段加倍来实现我的目标:

    {{ object.title}}

    {{ object.title}}

    {{ object.body}}

    【讨论】:

      猜你喜欢
      • 2013-07-28
      • 2017-03-19
      • 2011-09-17
      • 2011-05-03
      • 2011-12-28
      • 1970-01-01
      相关资源
      最近更新 更多