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

Sphinx search engine: Different min_prefix_len value for Different fields

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

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

min_prefix_len 只能为每个索引设置,但是如果您不担心花费额外的资源,您可以为整个索引设置 min_prefix_len = 3 然后只控制你的行为如果关键字的长度小于 5,应用将不允许搜索@name。例如:

关键字=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)

关键字=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)

关键字 = ghi:

mysql> select * from idx_min where match('@class ghi*|@name ghi');
Empty set (0.00 sec)

关键字 = 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)

即请记住,在这种情况下,您也有前缀 >= 3 个字符用于 @name,并在您的应用程序中添加逻辑以在需要时放置 *。