Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 какой-то очень выборочный contains  [new]
brbrbr
Member

Откуда: дровишки?
Сообщений: 6067
Добрый день.

Есть таблица book, в ней поле data - xml данные.
По этому полю построен FTI.

В таблице есть 24 записи, содержащих подстроку "по взаимодействию".

делаю запрос
select *
from book b
where contains(b.data, '"по*" AND "взаимодействию*"')
возвращает 7 строк

делаю запрос
select *
from (
select id, data.value('book/name', 'varchar(500)') as name
from book
where contains(data, '"взаимодействию*"')
) as t1
where name like '%по взаимодействию%'
Возвращает 24 строки

Из-за чего такое может быть?
19 окт 11, 18:31    [11468602]     Ответить | Цитировать Сообщить модератору
 Re: какой-то очень выборочный contains  [new]
LeadyGaaga
Member

Откуда:
Сообщений: 37
слово "по" - noise word наверное.
19 окт 11, 18:39    [11468641]     Ответить | Цитировать Сообщить модератору
 Re: какой-то очень выборочный contains  [new]
brbrbr
Member

Откуда: дровишки?
Сообщений: 6067
LeadyGaaga
слово "по" - noise word наверное.

Почитал про FT stoplists (использую MS SQL Server 2008 R2).

В Storage\Full Text Stoplists, sys.fulltext_stoplist и sys.fulltext_stopwords пусто.

Нашёл таблицу sys.fulltext_system_stopwords - там действительно есть слово "по". Похоже, всё именно из-за него.

Чем грозит удаление всех записей из sys.fulltext_system_stopwords для нужного языка?
19 окт 11, 19:03    [11468798]     Ответить | Цитировать Сообщить модератору
 Re: какой-то очень выборочный contains  [new]
iljy
Member

Откуда:
Сообщений: 8711
brbrbr,

раздуванием индекса. Ну и снижением релевантности поисковых запросов. Не надо этого делать.
19 окт 11, 19:08    [11468839]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить