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
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.
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.
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.
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