2

だから私はFULLTEXTインデックス検索に苦労しており、解決された以前の質問がありましたが、一部の検索では正常に機能し、他の検索では機能しないようです

前と同様に、games テーブルでゲームを検索すると、約 25,000 行あり、g_name に FULLTEXT インデックスがあります。また、不完全な検索用語など、オートコンプリートを使用して機能する必要もあります

検索用語を使用して、それを分解し、各反復をループして、末尾に * を追加します (例: 'grand* theft* auto* v*')。

ということで、検索例をいくつか。上部にクエリを出力します。

BOOLEAN MODE オフ、結果は OK

(リンク切れ)

BOOLEAN MODE がオンで、結果が期待どおりに返されない

(リンク切れ)

BOOLEAN MODE オフ、結果は問題ありませんが、「Tenchu: Shadow Assassins」が他の「assassins creed」ゲームとどのように関連性があるかは不明ですか?

(リンク切れ)

BOOLEAN MODE がオンで、結果に「assassins creed iii」が表示されない

(リンク切れ)

オートコンプリート テキスト メッセージの部分的な単語、BOOLEAN MODE オフ、結果なし?!

(リンク切れ)

オートコンプリート テキスト メッセージの部分的な単語、BOOLEAN MODE オフ、OK 結果

(リンク切れ)

ブールモードをオン/オフにすると、なぜこのような奇妙な結果が生じるのかわかりません。一部の検索ではオンにし、他の検索ではオフにする必要があるようですが、単一の検索クエリが必要です。スコアは、どこからともなく引き出された BS の数値にすぎないようです。

また、オプションではない単語のミックスに「+」を追加し始めると、さらに奇妙な結果が生成されます。フルテキストを追加した全体的な理由は、物事をより柔軟にし、より有用な結果を返すことでしたが、状況を悪化させたようです.

だから私の質問は、その特定の検索用語/ゲームのニュアンスに関係なく、そしてそれが部分的な検索であるか完全な用語であるかに関係なく、毎回有用な結果を返すようにするにはどうすればよいですか. 理想的にはhttp://www.metacritic.com/のやり方と似ています (右上の検索ボックス)

4

1 に答える 1

0

私が教えた 1 つのコース プロジェクトは、このトピックをカバーしています : https://grape.ics.uci.edu/wiki/public/wiki/cs122b-2012-spring-project4#Requirement2 wiki/public/wiki/cs122b-2012-spring-mysql-fulltext 次の例に注意してください。

プレフィックス検索: SELECT entryID FROM ft WHERE MATCH (entry) AGAINST ('grad*' IN BOOLEAN MODE);

ブール検索: SELECT entryID FROM ft WHERE MATCH (entry) AGAINST ('+ Graduate -michigan' IN BOOLEAN MODE);

このアプローチは機能しますが、速度が遅く、ランキングも低くなります。

于 2012-11-17T07:18:05.653 に答える