2012-01-16 4 views
0

私が開発しているWebアプリケーションの多言語インデックスを実装しようとしています。現時点では、いくつかの言語、英語、マレー語で&アラビア語ののレコードが存在します(ただし、異なる列には区切られません)。現在、英語のステマーのみが有効です。Sphinxは並べ替えに応じて一貫性のない結果セットを返します

ステムインデックスと非ステムインデックスの2つのインデックスのみが作成されます。ソート列に応じて返される結果セットが一貫していないため、ステム付きインデックスに問題があります。

これらの2つのクエリ(ステミングされたインデックスからの)は、それぞれ異なる結果の合計数を返しますが、その差はソート順のみです。

SELECT * FROM test1stemmed WHERE MATCH('@institution universiti') GROUP BY art_id ORDER BY art_title_ord ASC; 

SELECT * FROM test1stemmed WHERE MATCH('@institution universiti') GROUP BY art_id ORDER BY art_title_ord DESC; 

ただし、非ステムインデックスで同じクエリが実行された場合、結果の数は等しくなります。

$sp = new SphinxClient(); 
$sp->SetServer('localhost', 9312); 
$sp->SetMatchMode(SPH_MATCH_EXTENDED); 
$sp->SetGroupBy('art_id', SPH_GROUPBY_ATTR, "$sp_sort_column $sort"); 
$sp->SetLimits($offset, $rows_per_page, 1000); 
$sp->Query("$q", 'test1stemmed'); 

私が行方不明です何:

は、私はまた、スフィンクスPHPのAPIと同じ問題を抱えていますか?私はここのドキュメントから逃し

答えて

0

何かhttp://sphinxsearch.com/docs/2.0.2/clustering.html

WARNING:グループが固定されたメモリ内で行われるため、その結果が唯一のおおよそのものです。実際に存在するグループよりもtotal_foundで多くのグループが報告される可能性があります。 @countも過小評価される可能性があります。不正確さを減らすには、max_matchesを上げる必要があります。 max_matchesに見つかったすべてのグループを保存できる場合、結果は100%正しいでしょう。

私はmax_matchesの値を大きくすることでこれを回避できますが、非常に大きな値を入れることは絶対に望ましくないので、代わりにクエリを修正します。

関連する問題