2011-11-14 9 views
0

誰かがSphinxランキングオプションを利用することができましたか?私はマニュアルと本を読んだが、ランキングは一切できない。私が理解しているところでは、ランク付けは単純に異なる方法で重みを計算し、並べ替えのタイプは何もしません。 @weight(内部のsphinxフィールド)でソートした結果をソートモードで拡張しましたが、これは必要ですが、異なるランク付けモードの違いは見られません。 スフィンクス検索ランキングが壊れていますか?

$cl->SetMatchMode(SPH_MATCH_EXTENDED2); 
$cl->SetSortMode (SPH_SORT_EXTENDED, "mylang DESC, @weight DESC, @id"); 

これらのどちら

はどんな違いが:私の設定は次のようなものである

$cl->setRankingMode(SPH_RANK_SPH04); 
$cl->setRankingMode(SPH_RANK_PROXIMITY_BM25); 

をと重量は、どちらのモードでも同じです。

最終的に、私が達成しようとしているのは、正確に一致する用語を正確にトップに並べることです。次のように例えば、「ハリー・ポッター」を探している場合の結果は次のようになります。

Harry Potter 
Harry Potter and the potters 
Harry Potter and the Prisoner of Azkaban 
Harry Potter and the Deathly Hallows: Part 1 

これは一例ですが、最初の結果は、他の人が希望、その後、正確な検索用語が含まれているものでなければなりません続く。これは起こっていない。誰でもこれに関する経験はありますか?

答えて

0

ことが判明SPH_RANK_SPH04 versioのsphinxapi.phpファイルには含まれていませんn 0.9.9 !!!だからあなたがそれを呼んでいても、それは考慮されておらず、さらにエラーを生じません。

トラブルシューティングが非常に難しくなるため、これはひどいことです。

これは、他の人に役立つことを期待して回答として投稿しました。私たちがそれを理解するまで、これ以上狂った2日間は失われました。

さらに、2.0.1(これはSVNから取得する必要があります)以上が必要であるため、実際には正面と正確に一致するものはありませんが、私はプロダクションで実験的なバージョンを使用するのは非常に疲れます。

スフィンクスの開発者がすぐにこの問題を処理してくれることを願っています。

を「1のとおり:

PS 開発者の日記を振り返ると、それは言ってません。10-beta、スフィンクスは8種類のランクを持っています "

0.9.9から2.0.1にアップグレードし、APIファイルを残しておく必要があります。私は決してこれをチェックしませんでした。ランキングモードが存在しない場合はエラーを投げます(マッチングなどの他のモードと同じように)。2.0.1のバグはまだテストで確認できます。

1

「ハリー・ポッター」から始まる以外のインデックスのレコードはありますか? いいえの場合、 "Harry Potter"というフレーズはランキングアルゴリズムでペナルティを受けます。

ことについての私の記事を参照してください。Interesting thing about BM25 in Sphinx Search

あなたのすべてのレコードは、「ハリー・ポッター」の完全一致を持っているので、私は複数の単語を持つレコードは、より高いランクのだろうと仮定します。

ソリューションは、属性を使用することができた店のレコードをバイト単位のサイズ:

sql_query = select field, length(field) as f_size from .... 

属性:

sql_attr_uint = f_size 

スフィンクスのソートモード:

$cl->SetSortMode (SPH_SORT_ATTR_ASC, 'f_size');

+0

'$ cl-> setRankingMode(SPH_RANK_SPH04);はそれを処理し、正確に一致するときに "Harry Potter"を上に持って来るはずですが、実際にはうまくいけば、それはsphinxapi.phpファイルには含まれていません。あなたがそれを考慮しているにもかかわらず、それは考慮されていないし、さらにエラーを生成しません。これはトラブルシューティングすることが非常に難しいので、ひどいです。それが他の人を助けることを期待しています。 – kakubei

+0

kukubei、SPH_RANK_SPH04もBM25に基づいており、SPH_MATCH_EXTENDED2モードと同じように動作します。フレーズマッチ "Harry Potter"は、 "Harry Potter and the Deathly Hallows:Part 1"よりも上回らないでしょう。 –

+0

ヤロスラフは、ドキュメントによると、それは正確な問題(それはBM25の主な違いの1つです)と実際にはバージョン2.0.2以降で修正されるはずです。 – kakubei

関連する問題