CONTAINSTABLE キーワードを使用して、SQL Server 2005 データベースに全文検索を実装しました。元のクエリで結果が得られない場合、「そのような音」またはGoogleの「もしかして」機能を追加する方法があるのだろうかと思っていました。
3 に答える
SQL Serverのsoundexは非常に制限されており、イライラします。Lucene.nethttp://incubator.apache.org/lucene.net/を確認することを強くお勧めします。Luceneは、高性能でフル機能のテキスト検索エンジンライブラリであり、.NETプロジェクトでも非常に簡単に使用できます。アプリに本格的な検索エンジンが必要な場合は、Luceneを使用してください。
http://lucene.apache.org/java/docs/features.htmlから取得したいくつかの機能:
- ランク付けされた検索、最高の結果
- 最初に多くの強力なクエリを返しました
- タイプ:フレーズクエリ、ワイルドカード
- クエリ、近接クエリ、範囲
- クエリおよびよりフィールド化された検索(タイトル、著者、コンテンツなど)
- ate-range検索任意の並べ替え
- フィールドマルチインデックス検索
- マージされた結果により、同時
- 更新と検索
これを可能にしたい場合は、生のテキストとクエリを正規化する必要があります。簡単な例として、SOUNDEX タイプの値で検索できるようにしたい場合は、クエリ文字列とクエリしている元の生データの両方を SOUNDEX する必要があります。その場でクエリ空間を効率的に処理することはできないため、代わりにインデックスの作成中に正規化します。
技術的には、データではなく実際のインデックスのみを正規化する必要がありますが、データはインデックスを作成する可能性が高いため、正規化する必要があります。
これは、単語の「ステミング」、複数形の削除などと同じプロセスです。
SQL Server には、SOUNDEXおよびDIFFERENCE関数があります。
この関連する SO の回答が役立つ場合があります: SQL 検索クエリをより強力にする方法は?