我在我的一个项目中使用sphinx搜索。我需要让搜索更准确。 例如,我的搜索是"我需要一个设计师和seo为我的Wordpress网站"。所以我想要的是获得包含设计师,seo和wordpress的最佳匹配结果。这是我的代码
$cl = new SphinxClient();
$cl->SetServer('1.23.4', 456);
$cl->SetMaxQueryTime(15000);
$cl->SetMatchMode(SPH_SORT_RELEVANCE);
$s->setMatchMode(SPH_MATCH_ANY);
$s->SetLimits(0, 100);
$res = $cl->query($searchterm,"products");
请帮助我,并提前致谢
答案 0 :(得分:0)
排名不是魔术' - 狮身人面像遵循一个确切的公式。然而,它的主观使用的公式,每个应用程序是不同的,并将受益于不同的设置。
在你的例子中,几乎可以肯定你有很多常见的'您的查询中的单词。例如,包含'和'的所有文件。将匹配,无论其他单词匹配!
停用词是一种处理方式(但有时候过于简单),基本上你将所有常用词添加到停止列表中,然后在匹配过程中不使用它们。
设置字段权重也可能真的有帮助,因为它不太可能拥有“常见”字样。单词标题例如(全文可能有负载)
或者那里有法定人数运算符,因此可能需要一定数量的单词(与停用词一起使用或单独使用!),例如可能需要至少60%的单词。而不仅仅是其中一个词。
而不是停顿词,可以虚拟地实现它,即预过滤查询并删除常用词。
(停用词或常用词,通常会从您的特定索引中手动创建。索引器中内置了一个工具,用于从索引中提取常用词,可以作为起点)
同样只需切换到SPH_MATCH_EXTENDED(通过使用仲裁运算符可以保持' OR'行为),可以灵活选择排名模式(setRankingMode),从而为调整排名提供更多可能性。