2011-08-09 3 views
1

VARCHAR型の列を含むテーブルがあります。私はユーザーの入力クエリに応じて列内の文字列を検索したい。私はApproximate Searchingを実装したいと思います。私のテーブルにはレコードのLacが入っています。私は検索を実装できると思っているいくつかの方法があります。検索を最適化するために文字列を格納する方法

  1. すべてのレコードをC#でロードし、検索アルゴリズムを適用します。

  2. レコードを個別に、または事前定義されたバッチサイズで取り出し、その上に検索アルゴリズムを適用します。 (しかし、それはパフォーマンスをダウングレードする可能性がある、急速にデータベース接続を確立します。)

私はそれを検索できるようにデータを保存するために、この機能や、いくつかの技術を実現するためにいくつかの他のメカニズムがあるだろう、と確信していますもっと早く。

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

+3

フルテキスト検索に目を通す必要があります。http://msdn.microsoft.com/en-us/library/ms142571.aspx – Tao

+0

データベース関数を記述すると、その関数をSQLで使用できます。現在、ほとんどのデータベースには、ファジィ検索をコーディングできる言語があります。 –

+0

@タオ:答えにそのコメントを入れてみませんか?あなたはたぶんそれのためのいくつかの担当者を得るでしょう。 – LukeH

答えて

3

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

+0

人はそれについて行くかもしれない方法を示すためにいいかもしれない、この質問はチュートリアル/概要にリンクするようです:http://stackoverflow.com/questions/37059/lucene-net-and-sql-server/37173#37173 – Tao

+0

@Tao:リファレンスタオ、本当に素敵なチュートリアルありがとう。 –

2

SQL Serverには、探している機能を完全に実行するための機能が組み込まれています。フルテキスト検索と呼ばれています。ここでは、マイクロソフトから

概要:http://msdn.microsoft.com/en-us/library/ms142571.aspx

一般的な概念は、あなたがどのようなテーブル/列が検索可能なテキストが含まれており、それはスペース効率とクエリ効率的な「フルテキストインデックス」を構築し、SQL Serverを伝えるということです。これらのインデックスは非同期で構築されているので、SQL Server 2005以降ではデータベース(バックアップなど)に格納されているため、管理が容易です。

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

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

関連する問題