Получение терминов с полным текстом SQL Server
Используя Lucene, можно получить термины, содержащиеся внутри индекса, т.е. уникальные слова, исключающие стоп-слова, которые содержат документы в индексе. Это полезно для создания предложений автозаполнения, среди прочего. Возможно ли подобное с полными текстовыми индексами MS SQL Server?
Ответы
Ответ 1
Вы можете использовать новое системное представление в SQL Server 2008, чтобы получить условия и количество вхождений, это то, что вы хотите?
sys.dm_fts_index_keywords_by_document
(
DB_ID('database_name'),
OBJECT_ID('table_name')
)
Вам нужно предоставить db_id и object_id таблицы полного текста. Это ссылка MSDN для этого.
http://msdn.microsoft.com/en-us/library/cc280607.aspx
Ответ 2
Я согласен с тем, что эта информация (слова в индексе, слова с ограничениями и т.д.) полезна - и если SQL Server серьезно относится к предложению платформы, эта информация должна быть раскрыта. Насколько я могу судить, он действительно недоступен в предыдущих версиях. Однако игра меняется в SQL Server 2008.
SQL Server 2008 предлагает новые виды динамического управления, которые предлагают эти метаданные для полного текста. Обратите особое внимание на sys.dm_fts_parser и sys.dm_fts_index_keywords.
В представлении sys.dm_fts_parser используется фраза вместе с несколькими другими параметрами и выводится таблица, показывающая набор строк, показывающий исходные версии отдельных слов после того, как слово breaker считает их отдельными словами.
MSDN предоставляет пример этого запроса для представления:
SELECT * FROM sys.dm_fts_parser (' "The Microsoft business analysis" ', 1033, 0, 0)
Чтобы получить ключевые слова, вы можете использовать sys.dm_fts_index_keywords.
Надеюсь, это наводит вас в правильном направлении. Приветствия.
Ответ 3
Со следующим вы можете взять имя таблицы и имя столбца в качестве переменных.
Он будет работать над текущей базой данных, в которой он запускается, опускает результаты конца файла и заказывает результаты, спускающиеся по количеству вхождений.
Обратите внимание, что полная индексация текста должна быть включена в этой таблице и столбце
DECLARE @TableName NVARCHAR(200) = 'MyTable'
DECLARE @ColumnName NVARCHAR(200) = 'MyColumn'
SELECT DISTINCT(display_term), occurrence_count FROM sys.dm_fts_index_keywords_by_document
(
DB_ID(),
OBJECT_ID(@TableName)
)
WHERE column_id =
(
SELECT TOP 1 col.column_id FROM sys.objects obj
INNER JOIN sys.columns col ON col.object_id = obj.object_id
WHERE obj.name = @TableName
AND col.name = @ColumnName
)
AND keyword != 0xFF
ORDER BY occurrence_count DESC
Ответ 4
sys.dm_fts_index_keywords
возвращает список индексированных терминов с дополнительной статистикой, а не список шумовых слов, которые извлекаются с помощью sys.fulltext_stopwords
.