首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >狮身人面像按一个字符进行匹配

狮身人面像按一个字符进行匹配
EN

Stack Overflow用户
提问于 2015-03-26 07:09:03
回答 1查看 821关注 0票数 0

我的索引配置:

代码语言:javascript
运行
复制
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。我试图使用下一个查询进行搜索:

代码语言:javascript
运行
复制
mysql> select COUNT(*) from my_index WHERE match('*cc*');
+----------+
| count(*) |
+----------+
|       63 |
+----------+
1 row in set (0.00 sec)

效果很好。

但是,如果我尝试用一个字符搜索,它不会给出结果:

代码语言:javascript
运行
复制
mysql> select COUNT(*) from my_index WHERE match('*c*');
+----------+
| count(*) |
+----------+
|        0 |
+----------+
1 row in set (0.00 sec)

我用基于mysql数据源的索引尝试了相同的配置,得到了相同的结果。是的,在重新配置之后我做了很多次重新索引。是斯芬克斯的虫子吗?

编辑:显示元;和显示计划;结果:

代码语言:javascript
运行
复制
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)
EN

回答 1

Stack Overflow用户

发布于 2015-04-02 05:58:41

http://sphinxsearch.com/bugs/view.php?id=2214

这种行为是故意的。由于性能原因,我们不允许使用1字符子字符串.然而,关于min_infix_len的文档已经过时了,没有明确提到这一点。我刚刚在后备箱(r4975)更新了它,谢谢你提出来。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29272804

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档