我的索引配置:
index my_index
{
# ...
type = rt
phrase_boundary = ., ?, U+2026
charset_table = 0..9, english, russian, _
dict = keywords
min_word_len = 1
min_infix_len = 1
preopen = 1
rt_field = title
infix_fields = title
}
我用的是斯芬克斯搜索2.2.7。我试图使用下一个查询进行搜索:
mysql> select COUNT(*) from my_index WHERE match('*cc*');
+----------+
| count(*) |
+----------+
| 63 |
+----------+
1 row in set (0.00 sec)
效果很好。
但是,如果我尝试用一个字符搜索,它不会给出结果:
mysql> select COUNT(*) from my_index WHERE match('*c*');
+----------+
| count(*) |
+----------+
| 0 |
+----------+
1 row in set (0.00 sec)
我用基于mysql数据源的索引尝试了相同的配置,得到了相同的结果。是的,在重新配置之后我做了很多次重新索引。是斯芬克斯的虫子吗?
编辑:显示元;和显示计划;结果:
mysql> select COUNT(*) from my_index WHERE match('*cc*');
+----------+
| count(*) |
+----------+
| 63 |
+----------+
1 row in set (0.00 sec)
mysql> SHOW PLAN;
+------------------+------------------------------------------+
| Variable | Value |
+------------------+------------------------------------------+
| transformed_tree | AND(KEYWORD(*cc*, querypos=1, expanded)) |
+------------------+------------------------------------------+
1 row in set (0.00 sec)
mysql> SHOW META;
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| total | 1 |
| total_found | 1 |
| time | 0.000 |
| keyword[0] | *cc* |
| docs[0] | 63 |
| hits[0] | 63 |
+---------------+-------+
6 rows in set (0.00 sec)
mysql> select COUNT(*) from my_index WHERE match('*c*');
+----------+
| count(*) |
+----------+
| 0 |
+----------+
1 row in set (0.00 sec)
mysql> SHOW PLAN;
+------------------+-----------------------------------------+
| Variable | Value |
+------------------+-----------------------------------------+
| transformed_tree | AND(KEYWORD(*c*, querypos=1, expanded)) |
+------------------+-----------------------------------------+
1 row in set (0.00 sec)
mysql> SHOW META;
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| total | 0 |
| total_found | 0 |
| time | 0.000 |
| keyword[0] | *c* |
| docs[0] | 0 |
| hits[0] | 0 |
+---------------+-------+
6 rows in set (0.00 sec)
发布于 2015-04-02 05:58:41
http://sphinxsearch.com/bugs/view.php?id=2214
这种行为是故意的。由于性能原因,我们不允许使用1字符子字符串.然而,关于min_infix_len的文档已经过时了,没有明确提到这一点。我刚刚在后备箱(r4975)更新了它,谢谢你提出来。
https://stackoverflow.com/questions/29272804
复制相似问题