2009-06-11 40 views
0

SQL Serverデータベースに2つのフィールドを持つテーブルがあり、asp.netアプリケーションで '@ SearchString'パラメータを持つストアドプロシージャが呼び出され、ストアドプロシージャはシンプルなテキスト一致ストアドプロシージャで使用するためのアログリム

CREATE PROCEDURE [dbo].[sp_FindMatches] @SearchString varchar(30) 
AS 
    SELECT * FROM Table1 WHERE Field1+Field2 LIKE @SearchString 

:「フィールド1」と「フィールド2」が

値がテーブルに2つのフィールドの連結で発見され、それらを呼び出す@Searchstringので、ロジックは、この(私は実際のクエリを簡素化している)ように見えますこの基本的なマッチングアルゴリズムを改良して、マッチするレコードにそれほど制限がないようにしたいと思います。例えば、ユーザーが "DOG HOUSE"をパラメータとして入力すると、既存のSPのかなり基本的なロジックは、正確な文字列を見つけるレコードを返します。文字列がちょうど隣り合っていなくても、 "犬"と "家"だけでレコードを返すようにしたいと思います。

「ベストマッチ」の観点からレコードをランク​​付けする方法があった場合でも、「DOG HOUSE」が完全一致であると判断された場合、「DOG」と「HOUSE」が一致する場合、犬」場合ではなく、第三の家」や 『家』ではなく 『犬』、第二ベストマッチ、発見された最良など

私が欲しいものの多くを行い、一般的なアルゴリズムはありますか?

答えて

2

ます

伝統的なTSQL wilを使ってこれを実装したやり方は、あなたが欲しいと思っていることを正確に行うように特別に設計されています。影響を受けた列のインデックスをすべて使用できなくします。

フルテキスト検索では怖がらないでください。設定は驚くほど簡単です。

0

私は2つの列を連結するビューを作成し、ストアドプロシージャを介してそのビューで全文検索を使用します。

関連する問題