【发布时间】:2011-08-25 06:29:35
【问题描述】:
我正在使用 Sphinx 为网站提供搜索,但在返回相关结果时遇到了一些问题。
为了让我的问题简单,假设我有两个字段,@title 和@body,它们的权重分别为 100 和 15。当我搜索诸如“in”之类的小词时,我希望它将该搜索词的完全匹配排名更高,然后然后检查与“”的匹配in*|*in|*in*' 并将它们排名略低。有没有办法让您的搜索具有这种类型的特异性?
“in”的示例结果:
- 印度美食
- 在中间
- 关于拉丁语的文档
一些相关设置是:
在 sphinx.conf 中:
morphology = stem_en
charset_type = utf-8
min_word_len = 2
min_prefix_len = 0
min_infix_len = 2
enable_star = 1
在search.php
$sp->SetMatchMode( SPH_MATCH_EXTENDED2 );
$sp->SetRankingMode( SPH_RANK_PROXIMITY_BM25 );
$sp->SetFieldWeights ( array('title' => 100, 'body' => 15) );
另外,附带说明一下:我也遇到过部分匹配项甚至没有出现在搜索结果中的情况。例如,我搜索了 Cow,但 Cowboy 没有显示为结果。我还搜索了 Cowb 和 Cowbo,直到我输入 Cowboy 才收到预期的结果。有什么想法吗?
这个问题与this previous SO question 的思路相同,但我希望我已经就我的问题以及我试图保证解决方案的事情提供了更多细节。
【问题讨论】:
-
我可以添加他们的任何其他项目来帮助人们回答这个问题吗?
标签: php search sphinx ranking infix-notation