ほとんどのユーザ入力単語を含むdbレコードに一致するクエリをt-sqlまたはlinqに書く必要があります。SQLで一致する最も近い句
exmaple:デシベルで のnvarcharフィールド:「速い茶色のキツネは、のろまなイヌに飛びかかった」
ユーザ入力:「茶色の牛」
それは言葉茶色を持っているので、プログラムがそのレコードと一致します。
私はもっと例を挙げる必要があるかどうか教えてください。
ほとんどのユーザ入力単語を含むdbレコードに一致するクエリをt-sqlまたはlinqに書く必要があります。SQLで一致する最も近い句
exmaple:デシベルで のnvarcharフィールド:「速い茶色のキツネは、のろまなイヌに飛びかかった」
ユーザ入力:「茶色の牛」
それは言葉茶色を持っているので、プログラムがそのレコードと一致します。
私はもっと例を挙げる必要があるかどうか教えてください。
一般に、UDFを使用して文字列を表形式のデータに分割し、同様のコマンドを使用できます。
declare @searchStr nvarchar(100)
set @searchStr = 'brown fox'
selecT T.* from test T, dbo.fnc_SplitSTring(@searchStr,' ')
where T.name like '%' + token + '%'
CREATE FUNCTION [dbo].[fnc_SplitString]
(
@InString varchar(8000),
@Delim char(1)
)
RETURNS @Return table
(
Position int identity,
Token varchar(100) -- Maximum token size is 100 chars...
)
As
BEGIN
Declare @CR varchar(1),
@LF varchar(1)
Set @CR = char(10)
Set @LF = char(13)
--
If @InString is null return
--
Declare @Pos int
Declare @Pattern char(3)
Set @Pattern = '%' + @Delim + '%'
--
Declare @Token varchar(30)
SELECT @InString = @InString + @Delim -- add trailing delimiter
SELECT @Pos = PATINDEX(@Pattern, @InString)
WHILE (@Pos <> 0) BEGIN
SELECT @Token = ltrim(rtrim(SUBSTRING(@InString, 1, @Pos - 1)))
Select @Token = replace(@Token, @CR, '')
Select @Token = replace(@Token, @LF, '')
Insert @Return Values (@Token)
SELECT @InString = STUFF(@InString, 1, PATINDEX(@Pattern, @InString),'')
SELECT @Pos = PATINDEX(@Pattern, @InString)
END
--
return
--
END
あなたは、あなたがFull Text Search技術を使用する必要があり、MS SQL Server環境でT-SQLを使用していると仮定。それはあなたにスピードを与え、車輪の再発明からあなたを遠ざけます。
linq経由でアクセスできますか? –
正式には、まだです。ストアドプロシージャを呼び出すLINQを使用するか、カスタムソリューションのためにこのリンクをチェックしてくださいhttp://sqlblogcasts.com/blogs/simons/archive/2008/12/18/LINQ-to-SQL---Enabling-Fulltext-searching。 aspx – tofi9
ユーザーワードを含むレコード、または最も多くのレコードを含むレコードが必要ですか? – TStamper