如何影响Sphinx结果权重

时间:2011-11-15 11:05:48

标签: sphinx

我在这里有一个类似的问题:Sphinx search ranking broken?,但我想我会问一个更简单的版本,看看我是否有任何点击。

有谁知道如何影响Sphinx搜索结果中的权重?专门针对完全匹配。

我知道改变排名模式会给你不同的体重秤,但我得到的大多数点击都具有相同的权重,例如搜索“一次”会产生贬低的结果,如:

"once we were warriors" weight = 1637
"once" weight = 1637
"Once upon a time in the west" weight = 1637

当然,至少第一个应该具有不同的权重,因为它是完全匹配的。

对抗这个问题几天,任何帮助都会非常受欢迎。

5 个答案:

答案 0 :(得分:2)

Sphinx forum中提出了相同类型的问题。

$cl->setMatchMode(SPH_MATCH_EXTENDED);
$cl->setRankMode(SPH_RANK_WORDCOUNT);

$cl->Query('"^public work place$ | "public work place" | (public work place) | "public work place"/1 | (*public* *work* *place*)',$index);

这适用于我,先按顺序获得完全匹配,然后按顺序获得短语等。

注意:此处不是获得不同的权重,而是根据提供的查询设置结果顺序。我认为最好在不改变不同重量的情况下获得结果,这需要更多的计算,最终节省时间和金钱。 : - )

这适用于我的系统并经过测试(Sphinx 0.9.9-release -r2117)。


答案 1 :(得分:1)

我刚用这种东西测试了SPH_RANK_SP04,似乎有效。

我已将此测试工具升级为使用sphinx 2.01(以便SPH04可用)

http://www.nearby.org.uk/sphinx/searchtest.php?q=one&ranking=7

注意'一个'自己获得尽可能高的重量。

答案 2 :(得分:0)

答案 3 :(得分:0)

此处类似的讨论:Sphinx search ranking broken?。我创造了另一个问题,希望通过简化事情,我会得到更多的答案,因为没有一个即将到来。

原来,版本0.9.9(发布)中的sphinxapi.php文件中不包含SPH_RANK_SPH04!因此,即使您正在调用它,也不会将其考虑在内,并且不会产生错误。

这很糟糕,因为它很难排除故障。

我发布了这个答案,希望它可以帮助别人。我们失去了将近2天的疯狂,直到我们发现它。

此外,2.0.1中有一个错误,它并没有真正带来一些精确的匹配,因为你需要2.0.2(你需要从SVN获得)或更高,但我会非常厌倦在生产中使用实验版本。

希望Sphinx开发人员能尽快解决这个问题。

PS 回顾开发者日记,它确实说:

“从1.10-beta开始,Sphinx有8名不同的人”

我们从0.9.9升级到2.0.1并且必须将api文件抛在后面,而在绝望中我甚至从未检查过这个。如果排名模式不存在(如同匹配等其他模式一样),Sphinx仍然会抛出错误,并且在我们的测试中,2.0.1错误仍然存​​在。

答案 4 :(得分:0)

我遇到了与PECL Sphinx模块相同的问题,我想我已经通过定义缺失的常量来解决这个问题:

define ( "SPH_RANK_PROXIMITY", 4 );
define ( "SPH_RANK_MATCHANY", 5 );
define ( "SPH_RANK_FIELDMASK", 6 );
define ( "SPH_RANK_SPH04", 7 );
define ( "SPH_RANK_EXPR", 8 );
define ( "SPH_RANK_TOTAL",9 );

希望得到这个帮助。