SQL Server Полнотекстовый поиск не дает результатов - PullRequest
2 голосов
/ 06 мая 2010

У меня SQL Server 2005 Express Edition с расширенными службами. Я включил FullText и создал каталог следующим образом:

create FullText catalog MyDatabase_FT in path 'mypath' as default

Затем я создал индекс FullText следующим образом:

create FullText index on Cell (CellName) key index PK_Cell
    with CHANGE_TRACKING AUTO

Я выполнил следующие запросы:

1) select count(*) from Cell where contains (CellName, 'CU*')
2) select count(*) from Cell where CellName like 'CU%'

И получил следующие результаты:

1) 0
2) 24

Я понимаю, что заполнение индексов FullText может занять некоторое время. Однако, несмотря на большое количество времени (12 часов), я все еще не получил никаких результатов. Затем я провел дальнейшее исследование с использованием функции ObjectPropertyEx () и выполнил следующее:

declare @id int
select @id = id FROM sys.sysobjects where [Name] = 'Cell'
select 'TableFullTextBackgroundUpdateIndexOn' as 'Property', objectpropertyex(@id, 'TableFullTextBackgroundUpdateIndexOn') as 'Value'
union select 'TableFullTextChangeTrackingOn', objectpropertyex(@id, 'TableFullTextChangeTrackingOn')
union select 'TableFulltextDocsProcessed', objectpropertyex(@id, 'TableFulltextDocsProcessed') 
union select 'TableFulltextFailCount', objectpropertyex(@id, 'TableFulltextFailCount') 
union select 'TableFulltextItemCount', objectpropertyex(@id, 'TableFulltextItemCount') 
union select 'TableFulltextKeyColumn', objectpropertyex(@id, 'TableFulltextKeyColumn') 
union select 'TableFulltextPendingChanges', objectpropertyex(@id, 'TableFulltextPendingChanges') 
union select 'TableHasActiveFulltextIndex', objectpropertyex(@id, 'TableHasActiveFulltextIndex') 

Это дало следующие результаты:

TableFullTextBackgroundUpdateIndexOn 1
TableFullTextChangeTrackingOn 1
TableFulltextDocsProcessed 11024
TableFulltextFailCount 0
TableFulltextItemCount 4038
TableFulltextKeyColumn 1
TableFulltextPendingChanges 0
TableHasActiveFulltextIndex 1

Затем я попытался сделать новую полную популяцию индекса следующим образом:

alter fulltext index on Cell start full population

И я получаю следующее предупреждение:

Warning: Request to start a full-text index population on table or indexed view 'Cell' is ignored because a population is currently active for this table or indexed view.

Я попытался обновить население следующим образом:

alter fulltext index on Cell start update population

Это вернуло: «Команда (и) выполнена успешно.», Однако я все еще не получаю результатов по полнотекстовому поиску.

Что мне не хватает? Что мне нужно сделать, чтобы заставить работать полнотекстовый поиск?

Спасибо, Элан

1 Ответ

4 голосов
/ 06 мая 2010

Ну, все это сводилось к форматированию текста поиска.

Это было неверно:

select count(*) from Cell where contains (CellName, 'CU*')

Это было правильно:

select count(*) from Cell where contains (CellName, '"CU*"')

Все отлично работает!

...