Sphinx搜索引擎:不同字段的min_prefix_len值不同

时间:2018-05-07 11:40:40

标签: indexing configuration sphinx

在sphinx中,我可以设置最小字长前缀长度以使用min_prefix_len属性进行索引。

我想为不同的字段设置不同的min_prefix_len值。例如,我有一个字段' Name'我想设置min_prefix_len = 5和另一个字段' Class'应该设置为3.换句话说,我想为每个字段而不是每个索引设置min_prefix_len。是否可以在sphinx搜索引擎配置中执行此操作?

1 个答案:

答案 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个字符,并在需要时为您的应用添加逻辑*。