IndexTank - 如何确定查询结果的优先级

时间:2012-02-09 11:00:17

标签: ruby-on-rails-3 full-text-indexing indextank

使用indextank ruby​​gem,如果我将这样的帖子编入索引

indexes.document(post.id).add({:title=> post.title, :text=> post.body})

我的查询应该是什么样的,以便在title匹配之前返回body匹配。这样做:

indexes.search("title:#{query} OR text:#{query}", :snippet=> :text)

返回从最新到最旧排序的所有匹配。

谢谢。

1 个答案:

答案 0 :(得分:2)

你的评分函数0定义为什么?默认情况下,它是“-age”,这意味着最近的第一个。对于文本相关性,您可以使用“rel”替换评分函数,这意味着文本相关性。

我不知道如何确保每个标题匹配都保证高于其他标题,但是您可以通过在查询的标题部分添加“^ 10”来大大“提升”标题。这是一个例子:

title:potter^10 text:whatever

这意味着标题匹配比“文本”字段的匹配高10倍。如有必要,你可以将数字提高“10”。