我正在尝试更新搜索标题,内容和标签的博客帖子的搜索功能。现在,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属性并将其拆分为多个标记吗?
答案 0 :(得分:0)
也许您已经意识到这一点,但如果没有:关于Sphinx的事情以及Thinking Sphinx如何与它集成:插入/更新不会自动添加到您的Sphinx索引文件中。
因此,如果您希望搜索结果准确无误,则需要定期运行ts:index
rake任务。
ts:rebuild
会停止Sphinx,然后运行ts:index
,然后再次启动Sphinx - 但是如果您不改变索引的结构(只是数据)那么就没有必要让Sphinx停止/启动。它有点像db:migrate
。最好坚持ts:index
进行计划任务。