在sphinx中,我可以设置最小字长前缀长度以使用min_prefix_len属性进行索引。
我想为不同的字段设置不同的min_prefix_len值。例如,我有一个字段' Name'我想设置min_prefix_len = 5和另一个字段' Class'应该设置为3.换句话说,我想为每个字段而不是每个索引设置min_prefix_len。是否可以在sphinx搜索引擎配置中执行此操作?
答案 0 :(得分:1)
min_prefix_len只能按索引设置,但如果您不担心花费额外资源,可以为整个索引设置min_prefix_len = 3,然后控制应用中的行为,不允许@name为如果关键字的长度小于5,则搜索。例如:
Keyword = abc:
mysql> select * from idx_min where match('@class abc*|@name abc');
+------+--------+--------+
| id | class | name |
+------+--------+--------+
| 1 | abcdef | ghijkl |
+------+--------+--------+
1 row in set (0.01 sec)
Keyword = abcde:
mysql> select * from idx_min where match('@class abc*|@name (abcde|abcde*)');
+------+--------+--------+
| id | class | name |
+------+--------+--------+
| 1 | abcdef | ghijkl |
+------+--------+--------+
1 row in set (0.00 sec)
Keyword = ghi:
mysql> select * from idx_min where match('@class ghi*|@name ghi');
Empty set (0.00 sec)
Keyword = ghijk:
mysql> select * from idx_min where match('@class ghi*|@name (ghijk|ghijk*)');
+------+--------+--------+
| id | class | name |
+------+--------+--------+
| 1 | abcdef | ghijkl |
+------+--------+--------+
1 row in set (0.00 sec)
即。请记住,在这种情况下,您也为@name添加了前缀> = 3个字符,并在需要时为您的应用添加逻辑*。