思考狮身人面像 - 搜索博客文章的标题,内容和标签

时间:2015-01-29 19:06:10

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

我正在尝试更新搜索标题,内容和标签的博客帖子的搜索功能。现在,Thinking Sphinx没有搜索标签。它正在执行以下查询:

SELECT * FROM `blog_post_core` WHERE MATCH('vacation')

如何让搜索包含标签?下面是索引文件。

ThinkingSphinx::Index.define 'blog/post', with: :active_record do
  indexes :title
  indexes :content
  indexes "replace(tag_cache, '#{TAG_SEPARATOR}', ' ')", as: :tag_name
  indexes user.username, as: :author
  has :created_at
end

编辑:TAG_SEPARATOR是" !!!"的字符串。 tag_cache是​​一个包含所有标签的字符串,但是分开了,例如" vacation !!! work"。替换实际上是获取:tag_cache属性并将其拆分为多个标记吗?

1 个答案:

答案 0 :(得分:0)

也许您已经意识到这一点,但如果没有:关于Sphinx的事情以及Thinking Sphinx如何与它集成:插入/更新不会自动添加到您的Sphinx索引文件中。

因此,如果您希望搜索结果准确无误,则需要定期运行ts:index rake任务。

评论中提到的

ts:rebuild会停止Sphinx,然后运行ts:index,然后再次启动Sphinx - 但是如果您不改变索引的结构(只是数据)那么就没有必要让Sphinx停止/启动。它有点像db:migrate。最好坚持ts:index进行计划任务。