2008-11-13 5 views
15

Mit Lucene kann man die Begriffe abrufen, die in einem Index enthalten sind, d. H. Die eindeutigen Wortstämme ohne Stoppwörter, die Dokumente im Index enthalten. Dies ist unter anderem nützlich, um Autovervollständigungsvorschläge zu generieren. Ist etwas ähnliches mit MS SQL Server Volltextindizes möglich?Abrufen von SQL Server-Volltext-Indexbegriffen

Antwort

18

Sie können die neue Systemansicht in SQL Server 2008 verwenden, um die Begriffe und die Anzahl der Vorkommen zu erhalten, ist das was Sie wollen?

sys.dm_fts_index_keywords_by_document 
( 
    DB_ID('database_name'),  
    OBJECT_ID('table_name') 
) 

Sie benötigen die db_id und object_id der Volltext-Tabelle zu liefern. Dies ist der MSDN-Link dafür.

http://msdn.microsoft.com/en-us/library/cc280607.aspx

6

Ich bin damit einverstanden, dass diese Informationen (Wörter im Index, Wörter stammten, etc.) nützlich ist - und wenn SQL Server ernst ist eine serch Plattform bietet, diese Informationen müssen ausgesetzt werden. Es ist wirklich nicht in früheren Versionen verfügbar, soweit ich das beurteilen kann. Das Spiel ändert sich jedoch in SQL Server 2008.

SQL Server 2008 bietet neue dynamische Verwaltungsansichten, die diese Metadaten für Volltext anbieten. Achten Sie besonders auf sys.dm_fts_parser und sys.dm_fts_index_keywords.

Die sys.dm_fts_parser-Ansicht nimmt eine Phrase zusammen mit einigen anderen Parametern auf und gibt eine Tabelle mit einem Zeilensatz aus, der Stammversionen der einzelnen Wörter anzeigt, nachdem der Worttrenner sie als separate Wörter betrachtet hat.

MSDN gibt das Beispiel dieser Abfrage gegen die Ansicht:

SELECT * FROM sys.dm_fts_parser (' "The Microsoft business analysis" ', 1033, 0, 0) 

Um die Keywords zu erhalten, können Sie sys.dm_fts_index_keywords verwenden.

Ich hoffe, dass Sie in die richtige Richtung weist. Prost.

0

sys.dm_fts_index_keywords gibt gibt die Liste der indizierten Begriffe, mit zusätzlichen Statistiken, nicht die Liste der Geräuschwörter, die dank sys.fulltext_stopwords erneut angezeigt wird.

1

Mit dem folgenden können Sie den Tabellennamen und den Spaltennamen als Variablen verwenden. Es wird auf der aktuellen Datenbank, die es ausgeführt wird, arbeiten, Ergebnis der Dateiende auslassen und Reihenfolge der Ergebnisse nach Anzahl der Vorkommen sortiert.

Beachten Sie, dass die Volltextindizierung für die Tabelle und Spalte

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 
muss aktiviert sein
Verwandte Themen