Fulltextové vyhledávání
ALVAO dokáže rychle vyhledávat informace v databázi pomocí technologie Fulltextové vyhledávání (Full-Text Search - FTS). Pokud je FTS vypnuto, vyhledávání může být pomalé a vyhledávání v denících požadavků není vůbec dostupné.
Pokud byla v době počáteční instalace ALVAO nebo při upgrade na aktuální verzi na SQL Server nainstalována komponenta Full-Text and Semantics Extractions for Search, bude FTS automaticky povoleno.
Ověření dostupnosti FTS
Ověřte instalaci a nastavení FTS pomocí SQL skriptu:
IF (1 != ISNULL(fulltextserviceproperty('IsFulltextInstalled'),0)) PRINT N'FTS is not installed.' ELSE
IF (1 != ISNULL((SELECT 1 FROM [dbo].[sysfulltextcatalogs] WHERE name = 'ftCatalogAlvao'),0))
PRINT N'FTS is not enabled.' ELSE PRINT N'FTS is installed and enabled.'
Pokud není FTS nainstalováno, nainstalujte do SQL Serveru komponentu Full-Text and Semantics Extractions for Search, která je volitelnou součástí SQL Database Engine. Tuto komponentu můžete nainstalovat během počáteční instalace MS SQL Serveru nebo ji můžete přidat později pomocí instalačního programu SQL Serveru pro libovolnou edici.
Od verze 2012 již SQL Server standardně nepovažuje podtržítko ("\_") za oddělovač slov. Z tohoto důvodu od této verze nelze vyhledávat jednotlivá slova oddělená podtržítkem v textu; do vyhledávání je nutné zadat celou "frázi" včetně podtržítek nebo počáteční část fráze. Pokud vám toto chování nevyhovuje, můžete nastavit SQL Server tak, aby používal stejné oddělovače slov jako starší verze.
Zapnutí FTS
Doporučuje se FTS zapínat mimo běžnou provozní dobu Alvao. Po zapnutí FTS začne SQL Server vytvářet indexy pro vyhledávání, což může dočasně snížit výkon SQL Serveru.
Pokud není FTS v databázi ALVAO povoleno, spusťte následující SQL skript. Pro jeho spuštění musíte být členem skupiny sysadmin, db_owner nebo db_ddladmin.
DECLARE @languageLCID int;
SELECT TOP 1 @languageLCID = lcid from syslanguages where langid = @@DEFAULT_LANGID;
DECLARE @CreateFulltext nvarchar(MAX);
SET @CreateFulltext = N'CREATE FULLTEXT CATALOG ftCatalogAlvao WITH ACCENT_SENSITIVITY = OFF AS DEFAULT;
CREATE FULLTEXT INDEX ON tHdTicket (FullTextSearch LANGUAGE '+CAST(@languageLCID AS nvarchar)+N', mHdTicketNotice LANGUAGE '+CAST(@languageLCID AS nvarchar)+N', sHdTicket LANGUAGE '+CAST(@languageLCID AS nvarchar)+N') KEY INDEX PK_tHdTicket_iHdTicketId WITH STOPLIST OFF;
CREATE FULLTEXT INDEX ON tAct (sAct LANGUAGE '+CAST(@languageLCID AS nvarchar)+N', mActNotice LANGUAGE '+CAST(@languageLCID AS nvarchar)+N', sActFrom LANGUAGE '
+CAST(@languageLCID AS nvarchar)+N', sActTo LANGUAGE '+CAST(@languageLCID AS nvarchar)+N', sActToEmail LANGUAGE '+CAST(@languageLCID AS nvarchar)+N', sActFromEmail LANGUAGE '
+CAST(@languageLCID AS nvarchar)+N') KEY INDEX PK_tAct_iActId WITH STOPLIST OFF;
CREATE FULLTEXT INDEX ON tDocument (sDocument LANGUAGE '+CAST(@languageLCID AS nvarchar)+N', OcrText LANGUAGE '+CAST(@languageLCID AS nvarchar)+N') KEY INDEX PK_tDocument_iDocumentId WITH STOPLIST OFF;
CREATE FULLTEXT INDEX ON tArticle (HtmlArticleBinary TYPE COLUMN HtmlArticleBinaryExt, sArticle LANGUAGE '+CAST(@languageLCID AS nvarchar)+N', mArticleAnnotation LANGUAGE '+CAST(@languageLCID AS nvarchar)+N', mArticle LANGUAGE '+CAST(@languageLCID AS nvarchar)+N') KEY INDEX PK_tArticle_iArticleId;
CREATE FULLTEXT INDEX ON ArticleLoc (Name LANGUAGE '+CAST(@languageLCID AS nvarchar)+N', Annotation LANGUAGE '+CAST(@languageLCID AS nvarchar)+N', Text LANGUAGE '+CAST(@languageLCID AS nvarchar)+N', HtmlText LANGUAGE '+CAST(@languageLCID AS nvarchar)+N') KEY INDEX PK_ArticleLoc_Id;
CREATE FULLTEXT INDEX ON tHdTicketApprovalItem (mHdTicketApprovalItemNotes LANGUAGE '+CAST(@languageLCID AS nvarchar)+N') KEY INDEX PK_tHdTicketApprovalItem WITH STOPLIST OFF;
CREATE FULLTEXT INDEX ON HdSectionLoc (HdSectionKeywords LANGUAGE '+CAST(@languageLCID AS nvarchar)+N') KEY INDEX PK_HdSectionLoc_HdSectionLocId WITH STOPLIST OFF;
CREATE FULLTEXT INDEX ON tblNode (Search LANGUAGE '+CAST(@languageLCID AS nvarchar)+N') KEY INDEX PK_tblNode_intNodeId WITH STOPLIST OFF;';
EXECUTE sp_executesql @CreateFulltext;
Skript skloňuje vyhledávaná slova podle výchozího jazyka databáze. Pokud chcete skloňovat slova podle jiného jazyka, nahraďte druhý řádek řádkem například takto:
SET @languageLCID = 1033
Nahraďte číslo 1033 kódem národního prostředí, které chcete pro skloňování slov použít. Pokud chcete jazyk změnit později, vypněte a znovu zapněte FTS.
Vypnutí FTS
Chcete-li zakázat katalog Full-Text Search, spusťte následující skript SQL. Musíte být členem skupiny sysadmin, db_owner nebo db_ddladmin.
DROP FULLTEXT INDEX ON tHdTicket;
DROP FULLTEXT INDEX ON tAct;
DROP FULLTEXT INDEX ON tDocument;
IF EXISTS (SELECT * FROM sys.tables t INNER JOIN sys.fulltext_indexes fi ON t.[object_id] = fi.[object_id] WHERE t.name= 'tArticle')
DROP FULLTEXT INDEX ON tArticle;
IF EXISTS (SELECT * FROM sys.tables t INNER JOIN sys.fulltext_indexes fi ON t.[object_id] = fi.[object_id] WHERE t.name= 'ArticleLoc')
DROP FULLTEXT INDEX ON ArticleLoc;
IF EXISTS (SELECT * FROM sys.tables t INNER JOIN sys.fulltext_indexes fi ON t.[object_id] = fi.[object_id] WHERE t.name= 'tHdTicketApproval')
DROP FULLTEXT INDEX ON tHdTicketApproval;
IF EXISTS (SELECT * FROM sys.tables t INNER JOIN sys.fulltext_indexes fi ON t.[object_id] = fi.[object_id] WHERE t.name= 'tHdTicketApprovalItem')
DROP FULLTEXT INDEX ON tHdTicketApprovalItem;
IF EXISTS (SELECT * FROM sys.tables t INNER JOIN sys.fulltext_indexes fi ON t.[object_id] = fi.[object_id] WHERE t.name= 'HdSectionLoc')
DROP FULLTEXT INDEX ON HdSectionLoc;
IF EXISTS (SELECT * FROM sys.tables t INNER JOIN sys.fulltext_indexes fi ON t.[object_id] = fi.[object_id] WHERE t.name= 'tblNode')
DROP FULLTEXT INDEX ON tblNode;
DROP FULLTEXT CATALOG ftCatalogAlvao;