MS Sql 70-461: Chapter 6

Les 1

Full Text Search (FTS) maakt het mogelijk om benaderend zoekopdrachten uit te voeren. Voordat gebruik gemaakt kan worden van FTS moeten full text indexes worden aangemaak in een ful text catalog. Vervolgens kan er gezocht worden op:
- simple terms: een of meerdere specifieke woorden of zinnen
- prefix terms: termen waarmee een woord of zin begint
- generation terms: inflectionele vormen van woorden
- proximity terms: woorden of zinnen die dicht bij een andere zin of woord liggen
- thesaurus terms: synoniemen voor een woord
- weighted terms: woorden of zinnen die gebruik maken van een zelf ingevoerd gewicht
- statistical semantic: zoeken op sleutelzinnen in een document
- similar documents: where gelijkwaardighed is bepaald door sematische sleutel zinnen.

Full-Text search components

Om te zien of FTS is gesintalleerd kan de query SELECT SERVERPROPERTY('IsFullTextInstalled') worden uitgevoerd.
Full-text indexes kunnen worden toegepast op kolommen van het type CHAR, VARCHAR, NCHAR NVARCHAR, TEXT, NTEXT, IMAGE, XML en VARBINARY(MAX). Kolommen van het type VARBINARY(MAX), IMAGE en XML hebben een extra kolom nodig waarin de extensie van het document wordt opgeslagen (.doc, .pdf, etc).

Filters halen de tekstuele informatie uit documenten en verwijderen de opmaak van de tekst. In FTS-terminologie heten filters ifilters. Met onderstaande query kan opgevraagd worden welke filters er op de instance geinstalleerd zijn:
EXEC sys.sp_help_fulltext_system_components 'filter';
of
SELECT document_type, path FROM sys.fulltext_document_types;

Extra filters kunnen ook gedownload worden. Nadat de filters gedownload en geinstalleerd zijn, dienen de filters nog geregistreerd te worden middels de volgende query:
EXEC sys.sp_fulltext_service 'load_os_resources', 1;
Het kan zijn dat Sql Server opnieuw opgestart moet worden om van de filter gebruik te maken.

Word breakers en stemmers voeren linguistische analyses uit op alle full-text data. Een word breaker identificeert individuele woorden (tokens). Deze tokens worden gecomprimeerd opgeslagen in een full-text index. De stemmer genereert inflectionele vormen van een woord gebaseerd op de regels van een taal.

Stoplists en stopwords zijn woorden die ruis veroorzaken. Deze woorden worden genegeerd bij zoekopdrachten.

Les 2

CONTAINS predicate

Met de contains predicate kan gezocht worden naar:
- woorden en zinnen in text
- exacte of fuzzy overeenkomsten
- inflectionele vormen van een woord
- Tekst waarin een zoekwoord dicht in de buurt komt van een ander zoekwoord
- Synoniemen van een zoekwoord
- Een prefix van een word of alleen een zin

CONTAINS wordt gebruikt in de WHERE clause.

FREETEXT predicate

Deze predicate is minder specifiek en geeft daarom meer records terug dan de CONTAINS predicate. Het zoekt naar de waarden die overeenkomen met de betekenis van een zin en niet alleen exacte woorden.

Les 3

Aan zoektermen in FTS kan een gewicht worden gehangen om de ranking van documenten te kunnen bepalen. Deze ranking kan niet worden ingezien door de CONTAINS predicate. Deze ranking kan worden opgehaald met de functies CONTAINSTABLE en FREETEXTTABLE. Beide functies geven twee kolommen terug: KEY en RANK. KEY is de unieke sleutel van de index, RANK geeft een waarde terug tussen 0 en 1000. Deze waarde verteld hoe goed de overeenkomst is met de zoekcriteria. Een lager nummer betekent een lagere relevantie.

Semantich Search functies

Er zijn drie table-valued functies waarmee semantisch gezocht kan worden
1. SEMANTICKEYPHRASETABLE
Retourneert een tabel met sleutelzinnen die geassocieerd zijn met de full-text indexed kolom van de kolom-lijst.
2. SEMANTICSIMILARITYDETAILSTABLE
Retourneert aan tabel met sleutelzinnen die veel voorkomend zijn over twee documenten.
3. SEMANTICSIMILARITYTABLE
Retourneert een tabel met documenten die semantische gelijkwaardig zijn aan het gezochte document..

Reacties

Populaire posts van deze blog

[SQL Server] varchar vs nvarchar

MS Sql 70-461: Chapter 5

[C#] Class serialiseren en deserialiseren