Полнотекстовый поиск работает по-разному на английском sh и нейтральном языке с номером s - PullRequest
0 голосов
/ 02 марта 2020

Попробуйте следующие сценарии

I. Нейтральный случай

create table fts_testC (id int identity(1,1) , fts varchar(max))
create  unique index fts_indC on fts_testC (id)
CREATE FULLTEXT INDEX ON fts_testC (fts LANGUAGE Neutral) key index fts_indC with stoplist=off;

insert into fts_testC (fts) values ('35 152đ3đ489đ3đ16đ3đ1')

/*No result*/
select * from fts_testC  where Contains(*, '"152đ3đ489đ3đ16đ3đ1*"')

/*Indexed words*/
SELECT * FROM sys.dm_fts_index_keywords(db_id(), OBJECT_ID('fts_testC'))

/ * результаты 152 35 35 152 d3d489d3d16d3d1 nn152 nn35 nn35152 КОНЕЦ ФАЙЛА * /

II. Engli sh case

create table fts_testE (id int identity(1,1) , fts varchar(max))
create  unique index fts_indC on fts_testE (id)
CREATE FULLTEXT INDEX ON fts_testE (fts LANGUAGE English) key index fts_indC with stoplist=off;

insert into fts_testE (fts) values ('35 152đ3đ489đ3đ16đ3đ1')

/*there is result*/
select * from fts_testE where Contains(*, '"152đ3đ489đ3đ16đ3đ1*"')

/*indexed words*/
SELECT * FROM sys.dm_fts_index_keywords(db_id(), OBJECT_ID('fts_testC'))

/ Результаты 152d3d489d3d16d3d1 35 nn35 КОНЕЦ ФАЙЛА /

Если я вставлю эти два слова с двумя пробелами между ними, то это сработает правильно. Я полагаю, что на нейтральном языке это разделитель тысяч?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...