私は10百万語句をすばやく検索しなければならないオートコンプリートを構築しており、いくつかの問題が発生しています。私の最初のアイデアは、ある種のトライ/三元ツリー構造を通過することでしたが、それらは厳密にプレフィックスマッチングであり、私のアプリケーションには十分ではありません(完全なインフィクスマッチングが必要です)。私は大きなソリューションSqlServer FullText Indexing、Lucene、Solr、Sphinxに移行しましたが、LuceneとSqlServer FullText Indexingはフルテキストではなく、素敵な機能(soundex、proximityなど)を前置しています。私はLevenshtein編集距離を助けることができる方法を考えようとしましたが、編集距離の高い単語をサポートするだけでなく、合理的に正確な方法を見つけることができませんでした(つまり、googleとogl。一般的なケースではしきい値を高くする)。高速挿入検索
私の質問は、Google/bingなどの強力なハウスはどうしますか?彼らはちょっとしただけでそれを強制しますか?私はノーと思いますが、私はそれを支持することはできません。
助けていただけたら幸いです!
Nグラムのアプローチが役立つと思います。それから、あなたが必要とすることを行うhttp://sna-projects.com/cleo/があります。 – aitchnyu
"Luceneは全文ではありません"?あなたはそれについて詳述できますか?ほとんどの人が使っている定義とは異なる定義があるようです。また、Solr/Lucene/Sphinx/etcのそれぞれで何を試しましたか?あなたはSolrがオートコンプリートを処理する特定のコンポーネントを持っていることをご存知ですか? –
私は "* talli *"を検索すると、 "metallica"がマッチしたということを意味します。そうでないsqlserverとluceneの両方の下にあります。 – hermitt