Full text search in SQL Server

User avatar
Win32nipuh
Уже с Приветом
Posts: 2489
Joined: 04 Feb 2002 10:01
Location: Слава Україні!

Post by Win32nipuh »

uniqueman wrote:хм. проблема до сих пор существует. При попытке найти что то подобное "market closed", выдаются как правильные результаты, так и записи, не имеющие такой пары слов.

Может ли это быть из за того, что ночью я удаляю некоторые записи а потом делаю full population? У меня на таблице стоит change tracking with backgroung reindex. Нужно ли делать все равно полную population после удаления записей?


Я не совсем понимаю, зачем Вы делаете full population ночью?
У Вас стоит change tracking with backgroung reindex - этого достаточно.
Возможен такой вариант: стартует full population, из-за большого объема он не успевает полностью проиндексировать таблицы, заполнить каталог, и Вы получаете кашу.
У меня был такой случай у клиента: слабый сервер, который не успевал индексировать, и на выходе получалась абракадабра.
Поэтому, я бы делал так: если ночью нагрузка на сервере меньше, чем днем, не трогайте сервер, пусть дотягивает индексы, и следите за свойствами каталога, входит ли он в состояние Idle хоть когда-нибудь? Если он постоянно в состоянии Paused, Change Tracking etc., значит он захлебывается, но продолжает "жрать кактусы" :-).
Добавьте память, настройте память...

КРоме всего, не забудьте, что построение индексов - это задача сервиса, внешнего по отношению к SQL Server. ЕСли Вы указали для SQL Server более высокий приоритет в системе, то он будет давить mssearch, и он не будет успевать индексировать.

Удачи.
uniqueman
Уже с Приветом
Posts: 2013
Joined: 16 Mar 2002 10:01
Location: New York City

Post by uniqueman »

Я не совсем понимаю, зачем Вы делаете full population ночью?


Потому что ночью удаляются записи из таблицы и я подумал что было бы логично перестроить заново все.

каталога, входит ли он в состояние Idle хоть когда-нибудь? Если он постоянно в состоянии Paused, Change Tracking etc., значит он захлебывается, но продолжает "жрать кактусы" :-).


я сейчас посмотрел на состояние каталога. Оно стоит Shutdown. Что это? Перестали индексы обновлятся?


КРоме всего, не забудьте, что построение индексов - это задача сервиса, внешнего по отношению к SQL Server. ЕСли Вы указали для SQL Server более высокий приоритет в системе, то он будет давить mssearch, и он не будет успевать индексировать.


а где эти приоритеты ставятся? Вы имеете в виду приоритет процессов?
User avatar
Win32nipuh
Уже с Приветом
Posts: 2489
Joined: 04 Feb 2002 10:01
Location: Слава Україні!

Post by Win32nipuh »

Сервер сам все перестроит без Вашей помощи, на то у него и background, и changetracking указаны.Я думаю Вы усложняете ему работу.
uniqueman
Уже с Приветом
Posts: 2013
Joined: 16 Mar 2002 10:01
Location: New York City

Post by uniqueman »

Проклятье. У каталога ни с того ни с сего появился статус Shutdown.

Половина результатов выборок неправильна сейчас :х Что это за статус? Я ничего не трогал.
8K
Уже с Приветом
Posts: 5552
Joined: 20 Mar 2001 10:01
Location: SFBA

Post by 8K »

uniqueman wrote:Проклятье. У каталога ни с того ни с сего появился статус Shutdown.

Половина результатов выборок неправильна сейчас :х Что это за статус? Я ничего не трогал.

Каталог может рапортовать такой статус в течении недолгого времени (ну, там, минуту). Если статус не меняется - это признак catalog corruption at MS Search side. Я бы посоветовал заново создать каталог и проиндексировать таблицу.

Там выше дело говорят - не мучайте животинку. Запустите full crawl один раз, а потом дайте возможность автоматическому change tracking отслеживать изменения, вставки и удаления записей.

Если изменения происходят слишком часто и сервер не справляется в real time, есть два варианта: первый - ручной change tracking (т.е. та таблица, куда информация об изменениях складывается, отсылается в MS Search шедулером ночью), второй - отказаться от change tracking вообще и делать тем же самым шедулером incremental population (это в случае, если sysfulltextnotify за день раздувается до непомерно больших размеров).

Для incremental population вам понадобится завести timestamp колонку в своей таблице, иначе волшебным образом incremental внутри превращается в full.
Увидев друга, Портос вскрикнул от радости...
8K
Уже с Приветом
Posts: 5552
Joined: 20 Mar 2001 10:01
Location: SFBA

Post by 8K »

uniqueman wrote:
КРоме всего, не забудьте, что построение индексов - это задача сервиса, внешнего по отношению к SQL Server. ЕСли Вы указали для SQL Server более высокий приоритет в системе, то он будет давить mssearch, и он не будет успевать индексировать.


а где эти приоритеты ставятся? Вы имеете в виду приоритет процессов?

Попробуйте поднять приоритет MS Search через

Code: Select all

sp_fulltext_service 'resource_usage'
Увидев друга, Портос вскрикнул от радости...
uniqueman
Уже с Приветом
Posts: 2013
Joined: 16 Mar 2002 10:01
Location: New York City

Post by uniqueman »

Каталог может рапортовать такой статус в течении недолгого времени (ну, там, минуту). Если статус не меняется - это признак catalog corruption at MS Search side. Я бы посоветовал заново создать каталог и проиндексировать таблицу..


в этот статус появляется периодически. не знаю почему. Приходится перестраивать каталог. Проиндексировать таблицу Вы имеете сделать Full Population?

Для incremental population вам понадобится завести timestamp колонку в своей таблице, иначе волшебным образом incremental внутри превращается в full.


Мне изменения индекса надо в real time делать. Справляется вроде с нагрузкой, но почему то выдаются неправильные резульаты.
8K
Уже с Приветом
Posts: 5552
Joined: 20 Mar 2001 10:01
Location: SFBA

Post by 8K »

uniqueman wrote:
Если статус не меняется - это признак catalog corruption at MS Search side. Я бы посоветовал заново создать каталог и проиндексировать таблицу..

в этот статус появляется периодически. не знаю почему. Приходится перестраивать каталог. Проиндексировать таблицу Вы имеете сделать Full Population?

К сожалению, это уже вопрос к MS Search, почему каталог попадает в такое состояние.

Я имел в виду удалить каталог и создать его заново, а не перестраивать. Всякие глюки могут быть; например, по какой-нибудь причине один из каталожных файлов имеет неправильные атрибуты доступа, или еще чего (это я спекулирую). Бывают приколы, что два каталога смотрят в одну директорию.

Затем вам придется заново создать full-text index для вашей таблицы и сделать full population. После этого включите change tracking и background population.
Увидев друга, Портос вскрикнул от радости...
8K
Уже с Приветом
Posts: 5552
Joined: 20 Mar 2001 10:01
Location: SFBA

Post by 8K »

uniqueman wrote:Мне изменения индекса надо в real time делать. Справляется вроде с нагрузкой, но почему то выдаются неправильные резульаты.

Ну, про это я уже в параллельном топике написал. Убедитесь, что результаты действительно неправильные (может, вы неверно понимаете семантику CONTAINS или FREETEXT). Далее, убедитесь, что в sysfulltextnotify этой неправильной записи не висит, т.е. она ушла для индексирования в MS Search. Ввиду асинхронности индекса фантомы возможны. Еще, какой у вас на самом деле тип колонки? TEXT, NTEXT, VARCHAR, NVARCHAR?
Увидев друга, Портос вскрикнул от радости...
uniqueman
Уже с Приветом
Posts: 2013
Joined: 16 Mar 2002 10:01
Location: New York City

Post by uniqueman »

действительно неправильные (может, вы неверно понимаете семантику CONTAINS или FREETEXT).


да вроде согласно MSDN в семантике особенного ничего нет.

Далее, убедитесь, что в sysfulltextnotify этой неправильной записи не висит, т.е. она ушла для индексирования в MS Search.


эта системная таблица у меня пустая.

Ввиду асинхронности индекса фантомы возможны. Еще, какой у вас на самом деле тип колонки? TEXT, NTEXT, VARCHAR, NVARCHAR?


text оба поля

Return to “Вопросы и новости IT”