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

Откуда:
Сообщений: 15
В sqlServer 2008 R2 изменилась работа полнотекстового поиска. Не производится поиск по числам.

Пример.
Для строки ' МГТС 499 255 499 256'
Не сработает contains(ft_name, '" МГТС *" and "255*"'), но сработает contains(ft_name, '" МГТС *" and "499*"'),
Для строки ' МГТС 4' contains(ft_name, '" МГТС *" and "4*"') также не сработает, т.к. только одна циферка.
Видимо, все цифры при формировании индекса попадают в одно слово (select * from org where contains(ft_name, '" МГТС *" and "499 255*"') находит нужную организацию).

Т.е. идущие подряд несколько цифр словом не считаются, должна присутствовать обязательно буква!!!

Возможно ли что-либо сделать, чтобы цифры формировались в слова подобно буквам?

Редактировать файл noise.dat не предлагать, это уже проверено.
30 май 11, 14:44    [10732048]     Ответить | Цитировать Сообщить модератору
 Re: полнотекстовый поиск в sqlServer 2008 R2  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
Сравните результаты:

select * from sys.dm_fts_parser ('" МГТС 499 255 499 256"', 1049, 0,0)

select * from sys.dm_fts_parser ('" МГТС 499 255 499 256"', 1033, 0,0)
30 май 11, 16:06    [10733005]     Ответить | Цитировать Сообщить модератору
 Re: полнотекстовый поиск в sqlServer 2008 R2  [new]
olgorl
Member

Откуда:
Сообщений: 15
Со значением 1033 разбивка верная.
А как поменять word breaker?
30 май 11, 17:01    [10733562]     Ответить | Цитировать Сообщить модератору
 Re: полнотекстовый поиск в sqlServer 2008 R2  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
Сменить язык у FT индекса.
30 май 11, 17:04    [10733600]     Ответить | Цитировать Сообщить модератору
 Re: полнотекстовый поиск в sqlServer 2008 R2  [new]
olgorl
Member

Откуда:
Сообщений: 15
Т.е. фактически надо удалить колонку индекса и добавить уже с нужным языком?
Что-то мы не нашли как можно просто поменять.
30 май 11, 17:18    [10733697]     Ответить | Цитировать Сообщить модератору
 Re: полнотекстовый поиск в sqlServer 2008 R2  [new]
olgorl
Member

Откуда:
Сообщений: 15
Спасибо огромное, sp_fulltext_column нам помог:)
30 май 11, 17:26    [10733757]     Ответить | Цитировать Сообщить модератору
 Re: полнотекстовый поиск в sqlServer 2008 R2  [new]
olgorl
Member

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

Новые проблемы, файл noise.dat отредактирован, но '2' попадает в Noise Word.
М.б. кроме как noise.dat еще где-то прописываются шумовые слова?
30 май 11, 19:02    [10734439]     Ответить | Цитировать Сообщить модератору
 Re: полнотекстовый поиск в sqlServer 2008 R2  [new]
Леша777
Guest
в 2008 есть понятие stop list. нойз ворды уже не хранятся в файле.
30 май 11, 19:34    [10734573]     Ответить | Цитировать Сообщить модератору
 Re: полнотекстовый поиск в sqlServer 2008 R2  [new]
olgorl
Member

Откуда:
Сообщений: 15
Леша777,

понятно, спасибо.
Т.е. надо удалить из sys.fulltext_system_stopwords?
30 май 11, 19:42    [10734624]     Ответить | Цитировать Сообщить модератору
 Re: полнотекстовый поиск в sqlServer 2008 R2  [new]
olgorl
Member

Откуда:
Сообщений: 15
Леша777,
Нет, удалить из системной таблицы не получается.
А в эту таблицу слова не из файла загружаются?
Что можно сделать вообще? мне необходимо чтобы одиночные цифры искались
30 май 11, 19:45    [10734645]     Ответить | Цитировать Сообщить модератору
 Re: полнотекстовый поиск в sqlServer 2008 R2  [new]
Леша777
Guest
Удалить можно из стоп листа, потом rebuild каталога.
30 май 11, 19:47    [10734656]     Ответить | Цитировать Сообщить модератору
 Re: полнотекстовый поиск в sqlServer 2008 R2  [new]
Леша777
Guest
Понятное дело, что не на прямую из таблицы .

http://msdn.microsoft.com/ru-ru/library/cc280871.aspx

Потом rebuild индекса, дождаться пока каталог будет перестроен.(статус станет idle). И все - можно искать.
30 май 11, 19:51    [10734680]     Ответить | Цитировать Сообщить модератору
 Re: полнотекстовый поиск в sqlServer 2008 R2  [new]
olgorl
Member

Откуда:
Сообщений: 15
Леша777,

у нас не используется пользовательский стоп-лист. Надо очистить стоп-лист системный (который в sys.fulltext_system_stopwords хранится).

Вот здесь что писать?
ALTER FULLTEXT STOPLIST ??? DROP ALL LANGUAGE 'English';
30 май 11, 20:04    [10734733]     Ответить | Цитировать Сообщить модератору
 Re: полнотекстовый поиск в sqlServer 2008 R2  [new]
Леша777
Guest
Систмный стоп лист конечно же не отредактируешь(на то он и системный). создавайте свой и добавляйте туда что захотите.
30 май 11, 21:16    [10735031]     Ответить | Цитировать Сообщить модератору
 Re: полнотекстовый поиск в sqlServer 2008 R2  [new]
olgorl
Member

Откуда:
Сообщений: 15
спасибо
Мы просто отключили параметр Full-Text Index Stoplist в свойствах полнотекстового индекса таблицы.
Свои стоплисты не пришлось создавать.
31 май 11, 10:02    [10736575]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить