2015-03-26 7 views
0
конфигурации

Мой индекс:Sphinx матч инфикс один символ

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 
} 

Я использую sphinxsearch 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-DataSource основе, получили те же результаты. Да, я переделывал много раз после реконфигурации. Это ошибка в сфинксе?

EDIT: показать meta; и показать план; Результаты:

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) 
+0

Что показывает 'SHOW META'? Также стоит включить 'SET PROFILING = 1', а затем опубликовать результат' SHOW PLAN' – barryhunter

+0

добавлено show meta; и показать план; результаты: выглядит семантически корректно. – Nikita

+0

Я сообщил об этом как об ошибке: http://sphinxsearch.com/bugs/view.php?id=2214 – Nikita

ответ

0

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

поведение является намеренным. По соображениям производительности мы не допускаем подстроки с 1 символом. Однако документация по min_infix_len устарела и не упоминала об этом четко. Я только что обновил его в багажнике (r4975), спасибо за это.