配置 sphinx 以在启用形态学的情况下将精确匹配排名更高

Posted

技术标签:

【中文标题】配置 sphinx 以在启用形态学的情况下将精确匹配排名更高【英文标题】:Configure sphinx to rank exact matching higher with morphology enabled 【发布时间】:2017-03-05 01:08:40 【问题描述】:

我正在使用 sphinx 索引来按名称搜索用户。

我正在使用 soundex 形态学来显示更多相关结果,因为案例搜索者并不完全知道名称的拼写方式。考虑下表:

+----+--------------------+
| id |        name        |
+----+--------------------+
|  1 | Maciej Makuszewski |
|  2 | Dane Massey        |
|  3 | Lionel Messi       |
|  4 | Mr. No Matches     |
+----+--------------------+

启用 soundex 后,sphinx 建议将 1、2、3 行作为查询 messi 的相关结果。无论如何,我想先显示完全匹配。我的意思是,如果用户输入messi,他很有可能第一个看到莱昂内尔·梅西。

我的问题是我不知道该怎么做。我尝试设置不同的排名,但它没有给出任何结果。

我也试过添加

index_exact_words = 1

索引但它什么也没提供。

如果重要的话,我正在使用带有 node.js sphinxapi 模块的 sphinx API。

解决此类问题的常用方法是什么?

【问题讨论】:

【参考方案1】:

你想要,index_exact_words,但也应该添加expand_keywords

这将导致 sphinx 自动搜索模糊词(通过形态学)和准确词(通过 index_exact_words)。因此,完全匹配,两者都匹配,并且排名更高。

可以通过搜索say来手动完成同样的操作

messi | =messi

(类似于 expand_keywords 内部所做的)

【讨论】:

@GlenSwift,请使用此解决方案并解决问题。 (c) Glen 的个人 scrum-master

以上是关于配置 sphinx 以在启用形态学的情况下将精确匹配排名更高的主要内容,如果未能解决你的问题,请参考以下文章

在启用 Proguard 的情况下将 Play 服务从 8.1 更新到 8.3

在启用关联域的情况下将应用更新到应用商店时出现问题

如何在不启用 keras 中的 run_eagerly 标志的情况下将张量转换为 numpy 数组

Nginx正则配置

HTML5 视频播放器显示以在浏览器中启用 Flash。如何在不启用 Flash 的情况下播放流视频?

如何配置 php 以在 CentOS 上启用 pdo 并包含 mysqli?