[英]Full text search with multiple criteria
我有兩個表:
FirstTable
===============================
Id int primary key identity ,
Text varchar(4000)
Phrase
===============================
Id int primary key identity ,
Text varchar(4000) ,
ExcludingText varchar(4000)
我需要從第一個表中篩選出包含短語表的Text
列中的值的行,並且不包括同一行的ExcludedText
值。
表之間不存在任何關系,對於FirstTable
每一行,我必須檢查每個現有組合(包括Text,不包括ExcludedText)。
您可以根據Phrase
表的內容動態構建全文查詢。
declare @FullTextCondition as varchar(max)
set @FullTextCondition = STUFF(
(
SELECT '"' + Text + '" AND NOT "' + ExcludingText + '" AND '
FROM Phrase
FOR XML PATH(''), TYPE
).value('.', 'varchar(max)'),
1, 0, ''
)
-- remove trailing ' AND '
set @FullTextCondition = SUBSTRING(@FullTextCondition, 0, LEN(@FullTextCondition) - 3)
-- now perform your full text search
SELECT *
FROM FirstTable
WHERE CONTAINS(*, @FullTextCondition)
因此,例如,如果您的Phrase
表包含以下數據:
Id Text ExcludingText
-------------------------------------
1 good bad
2 ok not ok
然后,您的全文查詢( @FullTextCondition
)將如下所示:
'"good" AND NOT "bad" AND "ok" AND NOT "not ok"'
當然,請考慮您的Phrase
表的大小。 如果很大,將會影響性能
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.