【发布时间】:2013-04-15 08:24:16
【问题描述】:
我有一个单字段 Sphinx 索引,其词干设置如下:
index main_sphinxalert
{
# Options:
type = rt
path = /var/lib/sphinxsearch/data/main_sphinxalert
morphology = stem_en
# Fields:
rt_field = query
}
然后我插入:
mysql> INSERT INTO main_sphinxalert VALUES(201,'tables');
Query OK, 1 row affected (0.00 sec)
然后选择:
mysql> SELECT * FROM main_sphinxalert WHERE MATCH('tables');
+------+--------+
| id | weight |
+------+--------+
| 201 | 1709 |
+------+--------+
1 row in set (0.00 sec)
但不能在词干上选择:
mysql> SELECT * FROM main_sphinxalert WHERE MATCH('table');
Empty set (0.00 sec)
谁能告诉我什么给了?
【问题讨论】:
-
您确定您的 SQL 查询是针对 Sphinx 的词干索引而不是 MySQL 的原生全文索引运行的吗?
-
第一次创建索引后是否更改了配置?在创建索引后,Sphinx 会忽略对配置的更改。
-
@barryhunter - 好电话 - 是的,我做到了。我的印象是重新启动 sphinxsearch 服务会导致它重新读取配置文件。有没有办法在不创建新的 RT 索引的情况下强制重新读取?
-
@jsalonen 是的,肯定使用 Sphinx 的 MySQL 接口连接到 Sphinx 的索引,例如。
mysql -h 127.0.0.1 -P 9306 -
根据this post,您必须删除索引文件。这对我有用(我必须停止 sphinxsearch 服务才能这样做),因为我有能力丢失数据。如果有人知道没有数据丢失或手动重新索引的更好方法,请发表评论,我会更新我的答案。