Как определить, какое слово используется в полнотекстовом запросе? - PullRequest
0 голосов
/ 04 августа 2020

В очень простом выборе, например:

select * from Table1 where contains(*, 'word1 OR word2 OR wordN OR ...')

Есть ли способ узнать, какое слово было найдено в полнотекстовом индексе?

Что делать в отчете, который показывает, сколько раз слово присутствует в определенном интервале времени.

Something like: 
Word     Total
Word1     189
Word2     120
Word3      13

Я сделал следующее, однако запрос выполняется очень медленно:

select p.id, COUNT(ArtId) AS Total from Table n
INNER JOIN @lPs p ON  CHARINDEX( p.sWord, sText) > 0 
where Contains(n.sText, '"word1 " OR " word2 " OR " word3 "') AND dColumn Between 'date1' AND 'date2'
GROUP BY p.id

where @lPs is a table variable with 2 columns: id int, sWord nvarchar

Любое предложение будет оценен

1 Ответ

0 голосов
/ 04 августа 2020

Попробуйте использовать подзапрос:

select p.id, p.sWord, COUNT(ArtId) AS Total
from (select n.*
      from Table n
      where Contains(n.sText, '"word1 " OR " word2 " OR " word3 "') and
            dColumn Between 'date1' AND 'date2'
     ) n join
     @lPs p
     on s.Text like CONCAT('%' CHARINDEX( p.sWord, n.sText) > 0 
group by p.id, p.sWord;

SQL Сервер может быть более дружелюбным к полнотекстовому индексу с подзапросом.

...