Permalink
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Browse files
Merge branch '195_utf8_substring' into 'master'
fixed #195 utf8 substring matching with min lengths defined Closes #195 See merge request manticoresearch/dev!27
- Loading branch information
Showing
with
96 additions
and 13 deletions.
- +27 −13 src/sphinx.cpp
- +1 −0 test/test_350/model.bin
- +68 −0 test/test_350/test.xml
@@ -0,0 +1 @@ | ||
a:1:{i:0;a:8:{i:0;a:2:{s:8:"sphinxql";s:42:"select * from test where match ('как*')";s:10:"total_rows";i:0;}i:1;a:3:{s:8:"sphinxql";s:13:"show warnings";s:10:"total_rows";i:1;s:4:"rows";a:1:{i:0;a:3:{s:5:"Level";s:7:"warning";s:4:"Code";s:4:"1000";s:7:"Message";s:65:"Query word length is less than min infix length. word: 'как*' ";}}}i:2;a:3:{s:8:"sphinxql";s:44:"select * from test where match ('какт*')";s:10:"total_rows";i:2;s:4:"rows";a:2:{i:0;a:3:{s:2:"id";s:2:"11";s:3:"idd";s:2:"11";s:4:"body";s:25:"както неочень";}i:1;a:3:{s:2:"id";s:2:"12";s:3:"idd";s:2:"12";s:4:"body";s:27:"кактотак очень";}}}i:3;a:2:{s:8:"sphinxql";s:13:"show warnings";s:14:"total_affected";i:0;}i:4;a:2:{s:8:"sphinxql";s:43:"select * from test where match ('*акт*')";s:10:"total_rows";i:0;}i:5;a:3:{s:8:"sphinxql";s:13:"show warnings";s:10:"total_rows";i:1;s:4:"rows";a:1:{i:0;a:3:{s:5:"Level";s:7:"warning";s:4:"Code";s:4:"1000";s:7:"Message";s:66:"Query word length is less than min infix length. word: '*акт*' ";}}}i:6;a:3:{s:8:"sphinxql";s:45:"select * from test where match ('*акто*')";s:10:"total_rows";i:2;s:4:"rows";a:2:{i:0;a:3:{s:2:"id";s:2:"11";s:3:"idd";s:2:"11";s:4:"body";s:25:"както неочень";}i:1;a:3:{s:2:"id";s:2:"12";s:3:"idd";s:2:"12";s:4:"body";s:27:"кактотак очень";}}}i:7;a:2:{s:8:"sphinxql";s:13:"show warnings";s:14:"total_affected";i:0;}}} |
@@ -0,0 +1,68 @@ | ||
<?xml version="1.0" encoding="utf-8"?> | ||
<test> | ||
|
||
<name>warnings from short utf8 prefix and infix</name> | ||
|
||
<config> | ||
|
||
indexer | ||
{ | ||
mem_limit = 16M | ||
} | ||
|
||
searchd | ||
{ | ||
<searchd_settings/> | ||
} | ||
|
||
source test | ||
{ | ||
type = mysql | ||
<sql_settings/> | ||
sql_query_pre = SET NAMES utf8 | ||
sql_query = SELECT * FROM test_table | ||
sql_attr_uint = idd | ||
sql_field_string = body | ||
} | ||
|
||
index test | ||
{ | ||
source = test | ||
path = <data_path/>/plain1 | ||
docinfo = extern | ||
dict = keywords | ||
charset_table = a..z, _, A..Z->a..z, russian | ||
min_infix_len = 4 | ||
} | ||
</config> | ||
|
||
<db_create> | ||
CREATE TABLE test_table | ||
( | ||
id INTEGER PRIMARY KEY NOT NULL, | ||
idd INTEGER NOT NULL, | ||
body VARCHAR(255) NOT NULL | ||
) CHARACTER SET utf8; | ||
</db_create> | ||
<db_drop>DROP TABLE IF EXISTS test_table</db_drop> | ||
<db_insert>SET NAMES utf8</db_insert> | ||
<db_insert>INSERT INTO test_table VALUES | ||
( 1, 1, 'test' ), (11, 11, 'както неочень') , (12, 12, 'кактотак очень') | ||
</db_insert> | ||
|
||
|
||
<sphqueries> | ||
|
||
<!-- regression: warning from utf8 term --> | ||
<sphinxql>select * from test where match ('как*')</sphinxql> | ||
<sphinxql>show warnings</sphinxql> | ||
<sphinxql>select * from test where match ('какт*')</sphinxql> | ||
<sphinxql>show warnings</sphinxql> | ||
<sphinxql>select * from test where match ('*акт*')</sphinxql> | ||
<sphinxql>show warnings</sphinxql> | ||
<sphinxql>select * from test where match ('*акто*')</sphinxql> | ||
<sphinxql>show warnings</sphinxql> | ||
|
||
</sphqueries> | ||
|
||
</test> |