在思考sphinx对象时添加元描述?

时间:2013-09-14 09:46:48

标签: ruby-on-rails sphinx thinking-sphinx

ThinkingSphinx是否有任何简单的方法可以索引某些元数据关键字以及每个被索引的对象。

在下面的示例中,我将照片表编入索引,其中包含来自不同位置的照片。

ThinkingSphinx::Index.define :photo, :with => :active_record do
  indexes title, description, continent, country, province, area
end

现在如果我搜索“bhutan”这样的位置,sphinx会给我所有与不丹相关的照片和其他项目。但是如果我搜索“不丹照片”,那么狮身人面像不会返回任何内容,因为关键字“照片”没有与照片表中的项目一起编入索引。

我解决这个问题的一种方法是在我的照片表中添加“searchmeta”列,并将描述性关键字放在该列条目中。但这是非常昂贵的,因为相同的信息将复制到我的照片表的所有行。我想知道是否有更简单的方法解决这个问题?

1 个答案:

答案 0 :(得分:1)

正如Barry在评论中建议的那样,您可以从查询中删除元数据关键字中的信息 - 这可能是最好的,但另一种选择是您可以将其作为字符串直接添加到索引定义中(跳过需要有它在数据库中):

ThinkingSphinx::Index.define :photo, :with => :active_record do
  indexes title, description, continent, country, province, area
  indexes "'photo photos'", :as => :metadata
end