我正在使用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才得到预期的结果。有什么想法吗?
这个问题与之前的SO问题类似,但我希望能更详细地说明我的问题以及我尝试过的事情,以便得出解决方案。