【发布时间】:2013-09-14 09:46:47
【问题描述】:
ThinkingSphinx 有什么简单的方法可以索引一些元数据关键字以及每个被索引的对象。
在下面的示例中,我在此处为包含来自不同位置的照片的照片表编制索引。
ThinkingSphinx::Index.define :photo, :with => :active_record do
indexes title, description, continent, country, province, area
end
现在,如果我搜索一个位置,例如“不丹”,sphinx 会为我提供与不丹相关的所有照片和其他项目。但如果我搜索“不丹照片”,则 sphinx 不会返回任何内容,因为关键字“照片”没有与照片表中的项目一起编入索引。
我解决这个问题的一种方法是在我的照片表中添加一个“searchmeta”列,并将描述性关键字放在该列条目中。但这非常昂贵,因为相同的信息将被复制到我的照片表的所有行中。我想知道是否有任何更简单的方法可以解决这个问题?
【问题讨论】:
-
有点“丑陋”,但我只是从查询中删除了单词(图片/照片/等)。在将查询发送到 sphinx 之前删除单词。因为正如您所注意到的,理论上这些词无论如何都应该匹配所有图像。
-
@barryhunter 谢谢。这肯定适用于照片表查询。但是,我还有其他用例,这种方法不起作用。例如,查询“travelogues”、“reviews”、“activities”表并将综合结果呈现给用户。
-
你不能只用这个词来搜索特定的表吗?例如
if (contains 'photo') search_photos() elseif (contains 'reviews') search_reviews() else search_all()之类的? -
我对此不太满意。如果查询包含 BOOLEAN 运算符怎么办?如果没有其他解决方案,我会尝试查看thinkingsphix代码,看看是否可以添加新的配置规则以将表名添加到索引中。
标签: ruby-on-rails sphinx thinking-sphinx