Есть таблица
три поля проиндексированы FT Index
name
decription
short_descrition
Юзер ищет
SELECT id FROM dbo.docs
WHERE CONTAINS(*, N'data');
---
1
2
3
4
SELECT * FROM dbo.docs
CONTAINS(*, N'formsof(inflectional,data) AND NOT formsof(inflectional,mining)');
---
1
2
3
4
при этом слово data есть во всех полях всех 4 записей
слово mining есть так же в одном поле записи 1.
Проблема в том, что запись с ид=1 попадает в оба списка, хотя юзер хотел бы ее видеть только в списке 1, но во втором он ожидает
увидеть только
2
3
4
Ясно, что * в CONTAINS(* - причина, но какой тогда должен быть запрос?
create table docs ( id int not null primary key, name nvarchar(MAX), decription nvarchar(MAX), short_descrition nvarchar(MAX) )
три поля проиндексированы FT Index
name
decription
short_descrition
Юзер ищет
SELECT id FROM dbo.docs
WHERE CONTAINS(*, N'data');
---
1
2
3
4
SELECT * FROM dbo.docs
CONTAINS(*, N'formsof(inflectional,data) AND NOT formsof(inflectional,mining)');
---
1
2
3
4
при этом слово data есть во всех полях всех 4 записей
слово mining есть так же в одном поле записи 1.
Проблема в том, что запись с ид=1 попадает в оба списка, хотя юзер хотел бы ее видеть только в списке 1, но во втором он ожидает
увидеть только
2
3
4
Ясно, что * в CONTAINS(* - причина, но какой тогда должен быть запрос?