0

我正在使用狮身人面像 2.0.5。

狮身人面像配置:

index test
{
    type      = mysql
    sql_host  = host
    sql_user  = user
    sql_pass  = pass
    sql_db    = db

    sql_query = SELECT id, string \
                FROM table
}

狮身人面像.php:

$sphinx = new SphinxClient();

$sphinx->SetServer('localhost', 3312);
$sphinx->SetConnectTimeout(1);

$sphinx->SetLimits(0, 15);

$sphinx->SetMatchMode(SPH_MATCH_ALL);
$ret = $sphinx->query($query, 'index');

在“字符串”中有类似的行

"mouse, screen, keyboard, green house"
"green house, computer, keyboard, green house"

我想按以下方式排序:
1-在该行中找到的不同关键字的数量
2-在该行中找到的关键字总数

例如,如果我搜索“温室”,我想首先获得“温室、计算机、键盘、温室”。但如果我搜索“温室屏幕”,“鼠标、屏幕、键盘、温室”应该在第一位。

你知道我应该使用什么样的排序吗?

谢谢。

4

1 回答 1

1

我个人会将 , 放入phrase_boundary http://sphinxsearch.com/docs/current.html#conf-phrase-boundary

它将短语分成不同的边界。现在可以使用 primoxy 来影响结果。

然后会写搜索类似

$cl->setMatchMode(SPH_MATCH_EXTENDED);
$cl->setRankingMode(SPH_RANK_WORDCOUNT);
$cl->Query('"green house"~10 | "green house" | (green house)',$index);

可以准确地选择你喜欢的因素,来影响结果。使用 3 个(或更多!)单词查询变得更加复杂,因为必须将所有组合扩展到查询中。

(我不确定这是否会导致您的确切规格 - 老实说他们并不清楚 - 但这是这种情况的一般解决方案 - 匹配标签列表)

于 2012-09-05T12:10:17.117 回答