【问题标题】:Sphinx morphology stem_en not working狮身人面像形态 stem_en 不起作用
【发布时间】: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 服务才能这样做),因为我有能力丢失数据。如果有人知道没有数据丢失或手动重新索引的更好方法,请发表评论,我会更新我的答案。

标签: sphinx stemming


【解决方案1】:

事实证明,Sphinx 在创建实时索引后不会读取对配置文件的修改:see here for info.

解决方法是:

sudo service sphinxsearch stop

然后删除所有索引文件(对我来说保存在/var/lib/sphinxsearch/data/):

sudo rm main_sphinxalert.*

然后重启服务:

sudo service sphinxsearch start

这意味着您会丢失现有索引,然后必须从数据库手动重建。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-09
    • 2015-06-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多