0

Sphinx2.0.5を使用しています。

sphinx.config:

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

    sql_query = SELECT id, string \
                FROM table
}

sphinx.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 に答える