1
我正在嘗試確定所有可能的單詞旁邊有一個全文索引的列中的單詞。如何獲取單詞旁邊的單詞
我使用sys.dm_fts_index_keywords來獲取所有可能的關鍵字,忽略所有在停止列表中的單詞。
我試圖弄清楚的一個例子: 如果我有字符串:「我喜歡我的辦公室的咖啡廳」,我正在看「咖啡館」一詞,我想知道下一個字它是。
當我在下一步搜索時,是否包含停止列表單詞並不重要。我只是認爲利用已經存在的全文索引會更容易。
我正在嘗試確定所有可能的單詞旁邊有一個全文索引的列中的單詞。如何獲取單詞旁邊的單詞
我使用sys.dm_fts_index_keywords來獲取所有可能的關鍵字,忽略所有在停止列表中的單詞。
我試圖弄清楚的一個例子: 如果我有字符串:「我喜歡我的辦公室的咖啡廳」,我正在看「咖啡館」一詞,我想知道下一個字它是。
當我在下一步搜索時,是否包含停止列表單詞並不重要。我只是認爲利用已經存在的全文索引會更容易。
您可以使用FT索引查找匹配,但是您必須解析短語並找到相鄰的單詞。不幸的是,FTS不會給你比賽afaik的位置,否則這可能會更容易。
下面是一個例子設置:
declare @find varchar(100) = 'cafe';
declare @phrase varchar(100) = 'I like the cafe at my office';
;with
x(x)
as ( select cast('<w>'+replace(@phrase, ' ', '</w><w>')+'</w>' as xml)
),
words(pos, word)
as ( select dense_rank() over (order by n),
p.n.value('.', 'varchar(100)')
from x
cross
apply x.nodes('/w')p(n)
)
select d.*
from words w
cross
apply ( select *
from words
where pos in (w.pos-1, w.pos+1)
)d(pos, word)
where [email protected]