2011-07-25 11 views
3

私は軽量の高速検索ソリューションが必要です。全文検索の代替候補が必要

今日私はブール型モードでフルテキストを使用します。ブール型モードではすべての検索語が結果に必須です。

この機能は高速で動作し、要件を満たしています。

しかし、フルテキストの制限の一部、http://dev.mysql.com/doc/refman/5.0/en/fulltext-search.htmlが問題になっているようです。サイトがホストされているサーバー上にあり、MySQLの設定を変更できない(最小の長さなど)

検索はred,11およびab.cdを見つけることができなければなりません。

答えて

0

唯一のことは、あなたが見つけることができる出現回数から検索を行うことです。実際のインデックス方法は、DBが提供する内容によって異なる場合があります。

DBサイズが問題ではないと仮定すると、(非常に)基本的なアプローチは、検索ブロブ(例えば、stackoverflow上のポスト)を各単語に分解し、正規化しますasなど)、各単語を新しいレコードとして、インデックス付きリソースを識別するIDとともに挿入します。

IDのインスタンスをカウントし、カウント順に並べ替えます。

私のフィールドはまあまあではありませんので、慎重に処理してください! =]

+0

ですから、基本的に独自の検索機能ロジックをゼロから構築しますか? phew :) – Joseph

0

私はあなたが距離検索してみてくださいお勧めします:Levenshtein

または "N-gramの全文インデックス" を検索します。

2

http://sphinxsearch.com/あなたは小さな言葉はあなたが使用してより大きなインデックスを見つけることを理解しなければならないのに、あなたが

探しているものです。

0

私はそれをうんざりしていませんでしたが、私はフルテキスト検索の理論を(少なくともmysqlを使って)少し前に読みました。

メモリが正しく機能する場合は、必要なものをフルテキスト検索で使用できますが、より少ない数の検索文字で動作するように設定する必要があります(再コンパイルする必要があります)。私はそれが4文字のデフォルト数に設定されていると思う。投げられた他のいくつかのオプションで長さを2文字に変えて、あなたが得た結果をテストしたいと思うでしょう。

これが間違っていると、誰かが私を修正します。私はむしろ彼を赤ちゃんに投げつけません。

1

Luceneを使用すると、MySQLで実装されることが多く、より高速で機能が豊富になります。

組み込みのFTSエンジンを使用することは、比較的信頼性の高いInnoDBエンジンではうまく動作しないため、特に悪いことです。

関連する問題