1

VARCHAR型の列を含むテーブルがあります。ユーザー入力クエリに従って列内の文字列を検索したい。近似検索を実装したい。そして私のテーブルにはレコードのラックが含まれています。検索を実装できると私が考えている方法はいくつかあります。

  1. すべてのレコードをC#でロードし、検索アルゴリズムを適用します。(ただし、メモリを大量に消費します。)

  2. レコードを個別に、または事前定義されたバッチサイズでフェッチし、検索アルゴリズムを適用します。(ただし、データベース接続が迅速に確立されるため、パフォーマンスが低下する可能性があります。)

この機能を実装するための他のメカニズムや、データをより速く検索できるようにデータを保存するためのテクニックがあると確信しています。

これを実装するために、誰かが私にもっと良いアイデアを与えることができますか?

4

2 に答える 2

3

Luceneは、検索するための最良の方法の1つです。文字列をデータベースに保存することはできますが、それからLuceneインデックスを作成し、それを使用して検索します。

于 2011-08-09T09:10:55.427 に答える
2

SQL Serverには、目的の処理を正確に実行するための組み込み機能があります。これは、全文検索と呼ばれます。

Microsoftの概要はこちら:http://msdn.microsoft.com/en-us/library/ms142571.aspx

一般的な概念は、SQL Serverに検索可能なテキストを含むテーブル/列を指定し、スペース効率とクエリ効率の高い「フルテキストインデックス」を構築することです。これらのインデックスは非同期で作成され(更新/挿入の速度が低下しないため)、SQL Server 2005以降、データベースに保存されるため(バックアップなど)、簡単に管理できます。

検索する場合、クエリ言語は「通常の」テキストマッチングとは異なります。

全文検索は、無料の「SQL Server 2008 Express with Advanced Services」エディションでも利用できるため、コストは問題になりません。

于 2011-08-09T09:27:22.660 に答える