【发布时间】:2014-02-01 11:58:40
【问题描述】:
我试图通过单个 Sphinx 请求实现两个目标:获取与查询中的任何单词匹配的结果,并且首先具有完全匹配。 例如,如果我有歌曲搜索请求数据库:
- 麦莉·赛勒斯·鲍尔
- 麦莉赛勒斯破坏
- 麦莉·赛勒斯
还有两个测试查询:
- 麦莉·赛勒斯
- 麦莉赛勒斯破坏球
如果我搜索“麦莉赛勒斯”,我想得到第 3 行,如果我搜索“麦莉赛勒斯破坏球”,我想得到第 1 或第 2 行。我尝试了匹配和排名模式的不同组合,但仍然无法使用单个请求进行此操作。当我尝试SPH_MATCH_EXTENDED2 和SPH_RANK_SPH04 时,我的第一个测试查询工作正常,首先返回结果#3,但第二个测试查询没有返回任何结果。当我尝试SPH_MATCH_ANY 时,我得到第二个测试查询的部分匹配结果(#2 的权重稍高,这似乎是正确的),但第一个查询返回 3 行具有相同权重,并且 #1 由于顺序而位于顶部数据库。我现在唯一的解决方法是进行两个查询:一个用于完全匹配,另一个用于部分匹配,如果第一个失败。
另外从这个article 我看到除了SPH_MATCH_EXTENDED2 之外的所有匹配模式都是遗留的,那么当它们被删除时我应该使用什么来进行部分匹配,就像上面的例子一样?
【问题讨论】: