2016-03-31 10 views
0

Ich habe einen Volltextsuchindex auf SQL Server 2012 erstellt. Es funktionierte gut, bis ich eine Spalte aus der Tabelle entfernen musste, die in FullTextSearch enthalten war.Volltextsuchindex sofort aktualisieren - SQL SERVER 2012

Dann habe ich versucht, bestehende Volltextindex & Catalog zu löschen und dann neu zu erstellen. Aber irgendwie nach der Wiederherstellung zeigte es keine Ergebnisse für die Suchabfrage (für die frühere Ergebnisse kamen).

I RAN Abfrage nach dem Status für die Volltextsuche wissen:

declare @id int 
select @id = id FROM sys.sysobjects where [Name] = 'TableName' 
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') 
union select 'TableFulltextPopulateStatus', objectpropertyex(@id, 'TableFulltextPopulateStatus') 

Es ergab folgende Ergebnisse:

enter image description here

I RAN Abfrage folgende fallen & Full- neu Text Suche Katalog & Index:

 GO 
    EXEC sp_fulltext_database 'enable' 
    GO 
    DROP FULLTEXT INDEX ON [AT].[TableName] 
    GO 
    DROP FULLTEXT CATALOG [table_search_catalog]; 
    GO 
    CREATE FULLTEXT CATALOG [table_search_catalog] WITH ACCENT_SENSITIVITY = ON; 

    GO 
    DECLARE @Const Varchar(150) 
    DECLARE @Query1 Varchar(MAX) 

    SELECT @Const=TC.CONSTRAINT_NAME 
    FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS AS TC 
    INNER JOIN 
    INFORMATION_SCHEMA.KEY_COLUMN_USAGE AS KU 
    ON TC.CONSTRAINT_TYPE = 'PRIMARY KEY' AND 
    TC.CONSTRAINT_NAME = KU.CONSTRAINT_NAME 
    and ku.table_name='TableName' 
    ORDER BY KU.TABLE_NAME, KU.ORDINAL_POSITION; 


    SET @Query1 ='CREATE FULLTEXT INDEX ON [AT].[TableName] 
    ( 
     UserName 
     Language 1033, 
     ResumeTitle 
     Language 1033, 
     Address1 
     Language 1033, 
     OtherSNSURL 
     Language 1033, 
     LinkedInURL 
     Language 1033, 
     FacebookURL 
     Language 1033, 
     TwitterURL 
     Language 1033, 
     SkypeID 
     Language 1033, 
     comments 
     Language 1033, 
     CurrentCompany 
     Language 1033, 
     PreviousCompany 
     Language 1033 
    ) 
     KEY INDEX '[email protected] +' 
      ON table_search_catalog 
     WITH STOPLIST = SYSTEM, CHANGE_TRACKING AUTO' 

    EXEC (@query1) 


    GO 
    Update [AT].[TableName] SET UserName=UserName; 

    GO 
    ALTER INDEX ALL ON AT.TableName 
    REORGANIZE; 

    GO 
    ALTER FULLTEXT INDEX ON [AT].[TableName] 
     SET CHANGE_TRACKING MANUAL; 

    GO 
    ALTER FULLTEXT INDEX ON [AT].[TableName] 
     START FULL POPULATION; 

    GO 
    ALTER FULLTEXT INDEX ON [AT].[TableName] 
     START update POPULATION; 

    GO 
    ALTER FULLTEXT INDEX ON [AT].[TableName] 
     SET CHANGE_TRACKING AUTO; 

Offensichtlich enthält der Volltextsuchindex die zu verarbeitenden Datensätze, aber nach einer Weile blieb er gleich.

Bitte lassen Sie mich wissen, wie viel Zeit es im Allgemeinen dauert, um eine Aufzeichnung zu verarbeiten? Auch was sollte getan werden, um die ausstehenden Datensätze sofort zu verarbeiten (Abfrage dafür wird toll sein)?

Dank

Antwort

0

Eigentlich nach 20 Minuten, lief ich die Abfrage, um die Änderungen zu sehen & gefunden, dass alle anstehenden Datensätze verarbeitet wurden. Aber es dauerte immer noch viel Zeit, um die Veränderungen zu reflektieren.

Dank