【问题标题】:Some questions related to SphinxSE and RT indexes关于SphinxSE和RT索引的一些问题
【发布时间】:2011-06-24 19:46:52
【问题描述】:
我考虑在我的一个项目中使用 Sphinx 搜索,所以我有一些相关的问题。
- 使用 SphinxSE 和 RT 索引时,SphinxSE 表中的每个 UPDATE 或 INSERT 都会更新索引,对吗?不需要调用 indexer 什么的?
- 我能否同时搜索标签(用户为文档输入的关键字)和内容,并为标签匹配提供更多相关性?如果可能的话,我该如何实现标签搜索(现在我将它们放在单独的表格中,如倒排索引)
- 对于填充属性,最好将它们的副本粘贴到 SphinxSE 表中,还是使用我拥有的常规文档表中的 mysql 进行填充?
提前致谢!
【问题讨论】:
标签:
mysql
tags
sphinx
inverted-index
rt
【解决方案1】:
好的,我终于明白狮身人面像是如何工作的了。
- 您不能直接插入或更新 SphinxSE 表。相反,您在连接到 SphinxQL(直接连接到 sphinx 守护程序)时使用 INSERT/REPLACE。
在 1.10 中,您可以添加多个全文可搜索字段。我添加了标题、标签和内容。赋予标题更多权重的查询,然后是标签,然后是内容,如下所示:
SELECT SQL_NO_CACHE * FROM sphinx_docs WHERE query = 'a lot of keywords;weights=3,2,1;';
我使用 SQL_NO_CACHE 告诉 mysql 不要缓存这个结果,因为在下一次调用时我无法获得从 sphinx 返回的行数 (SHOW STATUS LIKE 'sphinx_total_found')
最好让 sphinx 做所有的排序、过滤和只使用 mysql 来加入需要更多信息的表。
另外我不得不说,我多次尝试将 sphinxse 插件添加到 mysql 都没有成功(无休止的等待时间),所以我切换到包含 SphinxSE 存储引擎的 MariaDB 5.2.4。