2008-09-03 16 views
14

軽量ファジーテキスト検索ライブラリを提案できますか?軽量ファジー検索ライブラリ

私がしたいことは、ユーザーがタイプミスのある検索語の正しいデータを見つけることができるようにすることです。

私はLuceneのような全文検索エンジンを使うことができましたが、残念だと思います。

編集:
ここで問題がより明確にするためには、そのライブラリのための主なシナリオです:
私は、文字列の大規模なリストを持っています。私はこのリスト(MSVSのintellisenseのようなもの)で検索できるようにしたいが、このリストをそれには存在しないがリストにあるいくつかの文字列に十分近い文字列でフィルタリングすることが可能でなければならない。
例:

  • レッド
  • グリーン
  • ブルー

私は、テキストボックスに 'グレン' や 'Geen' を入力すると、私は結果に 'グリーン' を見たいですセット。

インデックスデータの主な言語は英語です。

私はLuceneがその仕事のために重くなると思います。

更新

私は私の要件に合致する一つの製品を見つけました。それはShuffleTextです。
選択肢はありますか?

答えて

0

@aku - 作業中のsoundexライブラリへのリンクは、ページの一番下にあります。

Levenshtein距離については、Wikipedia article on thatも実装が下にリストされています。

1

Soundexはエンコードでは非常に「英語」です.Deitch-Mokotoffは、多くの名前、特にヨーロッパ(ドイツ語)とユダヤ人の名前でよく機能します。私の英国中心の世界では、私が使っているものです。

Wiki here

3

Luceneはスケーラビリティが非常に高い—です。これは小さなアプリケーションにも適しています。索引は、必要な場合には、すばやくメモリに作成できます。

ファジー検索では、実際にどのアルゴリズムを使用するかを決める必要があります。情報検索では、私はn-gramテクニックをLuceneと使いました。しかし、これは特別な索引付け手法であり、「ライブラリ」自体ではありません。

アプリケーションについて詳しく知ることなく、適切なライブラリを推薦することは容易ではありません。どのくらいのデータを検索していますか?データのフォーマットは何ですか?データの更新頻度はどのくらいですか?

1

あなたの開発プラットフォームを指定していないが、そのPHPは、あなたはZENDのLucene lubraryで見てください場合:、

http://ifacethoughts.net/2008/02/07/zend-brings-lucene-to-php/ http://framework.zend.com/manual/en/zend.search.lucene.html

それは、JavaでのLuceneよりもそのはるかに軽量化をランプなどと変換ライブラリやcmdラインコンバータを見つけることができれば、他のファイルタイプにも容易に拡張できます。これを行うためのOSSソリューションがたくさんあります。

1

SQL ServerとOracle DBに統合されたLucene APIベースのWalnutilを試してください。任意のタイプの索引を作成して使用できます。簡単な検索のために、walnutilsoftのいくつかのメソッドを使用することができます。Lucene APIを使用できるより複雑な検索ケースがあります。 Walnutil Toolsから作成されたインデックスが使用されたWebベースの例を参照してください。また、JavaとC#で書かれたいくつかのコード例を見ることができます。これを使用して、さまざまなタイプの検索を作成できます。 このツールは無料です。 http://www.walnutilsoft.com/

0

強力で軽量な解決策はsphinxです。

Luceneより小さく、曖昧さ回避をサポートしています。

それをC++で書かれて、それは、高速で、戦いテストされたのですすべてのENV用のライブラリを持っており、それは大企業で使われている、craigslists.org

2

Luceneがファジー検索にどれほど適しているかわかりませんが、カスタムライブラリが適しています。たとえば、この検索はJavaで行われ、かなり速く動作しますが、そのようなタスクのカスタムは次のとおりです。 http://www.softcorporation.com/products/people/