Я создал таблицу в Azure SQL Server с полнотекстовым индексом. Я использовал этот код для создания полнотекстового индекса:
use [MyDb]
create fulltext catalog full_text_catalog_foods;
go
create fulltext index
on dbo.foods(food_name,[description])
key index PK_Foods_foodId on full_text_catalog_foods;
В моем столе одна еда, т.е. "Чай с молоком и сахаром". Поэтому я пытаюсь найти этот результат по запросу ниже. но он возвращает пустой набор результатов.
declare @filters nvarchar(250) = 'r',
@q nvarchar(150) = 'tea with milk';
set @q = '"'+@q+'*"';
select
f.[Id]
,f.[food_name]
,f.[info_id]
...
...
--few more column
from
dbo.Foods f
where
contains(f.food_name, @q) and f.model = @filters;
Я пробовал вышеуказанный запрос, а также мой исходный запрос, как показано ниже. Но оба запроса возвращают пустой результат.
declare @Offset int = 0,
@Limit int = 50,
@filters nvarchar(250) = 'r',
@q nvarchar(150) = 'tea with milk';
set @q = '"'+@q+'*"';
select
f.[Id]
,f.[food_name]
,f.[info_id]
...
...
--few more column
from dbo.Foods f
where contains(f.food_name,@q) and f.model = @filters
order by f.Id
offset @Offset rows
fetch next @Limit rows only;
Редактировать
У меня есть три записи в таблице продуктов с food_name
= "Чай с молоком и сахаром", и это model = r
. Когда я использую приведенный ниже код, он возвращает две записи с именем «Чай с молоком и сахаром».
declare @q nvarchar(150) = 'tea with milk and sugar';
set @q = '"'+@q+'"'; -- here removed *
…
…
Я не понимаю, почему это не работает. Может кто-нибудь помочь мне решить эту проблему?