配置 sphinx 以在启用形态学的情况下对精确匹配进行更高排名
Configure sphinx to rank exact matching higher with morphology enabled
我正在使用 sphinx 索引按名称搜索用户。
我正在使用 soundex 词法来显示更相关的结果,因为案例搜索者并不完全知道名字的拼写方式。考虑以下 table:
+----+--------------------+
| id | name |
+----+--------------------+
| 1 | Maciej Makuszewski |
| 2 | Dane Massey |
| 3 | Lionel Messi |
| 4 | Mr. No Matches |
+----+--------------------+
启用 soundex 后,sphinx 建议将 1、2、3 行作为查询 messi
的相关结果。无论如何,我想先展示完全匹配。我的意思是,如果用户输入 messi
,他很有可能第一个看到 Lionel Messi。
我的问题是我不知道该怎么做。我尝试设置不同的排名,但它什么也没给出。
我也试过添加
index_exact_words = 1
索引但什么也没有。
如果需要的话,我将 sphinx API 与 node.js sphinxapi 模块一起使用。
解决此类问题的常用方法是什么?
你想要,index_exact_words
,但还应该加上expand_keywords
这将导致 sphinx 自动搜索模糊词(通过形态学)和准确词(通过 index_exact_words)。所以完全匹配,匹配两者,并且排名更高。
可以通过搜索 say
手动执行相同操作
messi | =messi
(类似于 expand_keywords 内部所做的)
我正在使用 sphinx 索引按名称搜索用户。
我正在使用 soundex 词法来显示更相关的结果,因为案例搜索者并不完全知道名字的拼写方式。考虑以下 table:
+----+--------------------+
| id | name |
+----+--------------------+
| 1 | Maciej Makuszewski |
| 2 | Dane Massey |
| 3 | Lionel Messi |
| 4 | Mr. No Matches |
+----+--------------------+
启用 soundex 后,sphinx 建议将 1、2、3 行作为查询 messi
的相关结果。无论如何,我想先展示完全匹配。我的意思是,如果用户输入 messi
,他很有可能第一个看到 Lionel Messi。
我的问题是我不知道该怎么做。我尝试设置不同的排名,但它什么也没给出。
我也试过添加
index_exact_words = 1
索引但什么也没有。
如果需要的话,我将 sphinx API 与 node.js sphinxapi 模块一起使用。
解决此类问题的常用方法是什么?
你想要,index_exact_words
,但还应该加上expand_keywords
这将导致 sphinx 自动搜索模糊词(通过形态学)和准确词(通过 index_exact_words)。所以完全匹配,匹配两者,并且排名更高。
可以通过搜索 say
手动执行相同操作messi | =messi
(类似于 expand_keywords 内部所做的)