我想知道SQL Server全文搜索是否可以读取或比较具有相同值的句子或文本
例如:
搜索文字:siomai big pack-by-6-pcs
具有相同的结果:
搜索文字:6-pcs siomai大包装
因为我以前知道的唯一方法就像
select * from productList where description like '%+ param +%'
所以如果我给这个查询参数“siomai big pack-by-6-pcs”,它就不会给出“大包装6-pcs siomai”的相同结果
我一直在搜索SQL Server的全文搜索,并想知道它是否会以这种方式工作,我想知道是否有办法?
答案 0 :(得分:1)
我认为你想用单词而不是整句来搜索,所以,你需要从你的搜索句子中提取单词,然后检查句子中的每个单词,然后当句子包含所有单词时匹配:
declare @sentence nvarchar(255) = 'big pack-by-6-pcs siomai';
with words as (
select n.x.value('.', 'nvarchar(255)') w
from (
select cast('<w>'+replace(@sentence,' ', '</w><w>')+'</w>' as xml) x
) t
cross apply t.x.nodes('/w') as n(x)
)
select t.txt
from yourTable t
left join words w
on ' ' + t.txt + ' ' like '% ' + w.w + ' %' -- where sentence contains word
group by t.txt
having count(w.w) = (select count(*) from words); -- sentence has all words