SQL Server全文搜索是否可以读取反向句子?

时间:2017-11-07 06:27:32

标签: sql sql-server

我想知道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的全文搜索,并想知道它是否会以这种方式工作,我想知道是否有办法?

1 个答案:

答案 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

SQL Server Fiddle Demo