SlideShare a Scribd company logo
1 of 27
Wyszukiwanie pełnotekstowe
(Full-Text Search)
w SQL Server
Kamil Nowiński
kamil@nowinski.net
Kamil Nowiński
• Konsultant, freelancer, SQL Server expert
• Ostatnio jako architekt w projekcie hurtowni danych
„Ari@dna2” programu e-Cło dla Ministerstwa Finansów
• Programista > 20 lat (VB6, VB.NET, C#, .NET Framework)
• Ponad 10-letnie doświadczenie w SQL Server (DEV/DBA)
• Bazy danych: Microsoft SQL 2000 – 2012+
• Członek komisji rewizyjnej Stowarzyszenia PLSSUG,
• Współorganizator konferencji SQLDay
• Certyfikaty SQL Server: MCITP, MCP, MCTS, MCSA, MCSE
• Zainteresowania:
• Optymalizacja baz danych, Hurtownie danych, SSIS
• Bieganie, Fotografia cyfrowa (Nikon D-90, Adobe Lightroom)
Agenda
Wprowadzenie
Full-Text Search Components
Creating and Managing Full-Text Catalogs & Indexes
Using the CONTAINS & FREETEXT Predicates
Wyszukiwarka Google
Możliwości wyszukiwania
• Simple terms – one or more specific words or phrases
• Perfix terms, which are terms the words of phrases begin with
• Generation terms, meaning inflectional forms of words
• Proximity terms (or words or phrases) close to another word/phrase
• Thesaurus terms, or synonyms of a word
• Weighted terms, which are words or phrases that use values with your
custom weight
• Statistical semantic search, or key phrases in a document
• Similar documents, where similarity is defined by semantic key phrases
Możliwości wyszukiwania
Kolumny typu:
• CHAR
• VARCHAR
• NCHAR
• NVARCHAR
• TEXT
• NTEXT
Kolumny typu:
• IMAGE *
• XML *
• VARBINARY(MAX) *
* Pozwalają przechowywać całe dokumenty.
Wymagana do tego dodatkowa kolumna z rozszerzeniem pliku (typ)
Full-Text Search Components
• Wymagana instalacja komponentu na instancji SQL Server
• Stosowanie filtrów (ifilters) dla dokumentów
– Zaczerpnięcie tylko informacji tekstowych
– Usunięcie formatowania z dokumentu(ów)
• Zainstalowane filtry:
– Wiele popularnych formatów jest zainstalowanych domyślnie
– Filtry dla dokumentów w formacie MS Office 2010 i nowszych:
http://www.microsoft.com/en-us/download/details.aspx?id=17062
– Po instalacji nowe filtry wymagają rejestracji w SQL Server:
Linguistic analysis
• Dane w indeksach Full-Text podlegają analizie językowej
• Analiza językowa wymaga znalezienia granicy słowa (word-breaking)
oraz znajomości odmian czasowników (stemming)
• Word breakers & stemmers są specyficzne dla każdego języka
• Zatem reguły analizy językowej również
• Default Full-Text language:
– Setup sets to the language of your instance
– English
If language is not supported or you use a nonlocalized version of SQL
Server
Stoplists & stopwords
• Stoplist-a może zawierać wiele stopword’s
• Pozwala zapobiegać indeksowaniu (a dokładniej wyszukiwaniu)
• Przykłady:
– łączniki: i, lub, oraz,
– Słowa często występujące w danej dziedzinie (np. SQL)
• Jak sprawdzić:
Synonimy i plik Tezaurus (thesaurus)
• Wyszukiwanie odbywa się wg podanych słów
• Wyszukiwanie odbywa się również wśród synonimów
• SQL Server korzysta z bazy synonimów zdefiniowanych w plikach XML
(thesaurus files)
• Każdy język posiada swój odrębny plik Tezaurus
• Edycja pliku pozwala na konfigurację:
– Diacritics_sensitive
– Expansion (autor, pisarz)
– Replacement (Win 2k8 -> Windows 2008)
• Po edycji pliku musi zostać on załadowany przez SQL Server:
Creating Full-Text Catalogs
CREATE FULLTEXT CATALOG catalog_name
[ON FILEGROUP filegroup]
[IN PATH 'rootpath']
[WITH <catalog_option>]
[AS DEFAULT]
[AUTHORIZATION owner_name]
<catalog_option>::=
ACCENT_SENSITIVITY = {ON|OFF}
• ON FILEGROUP, IN PATH
zostały zachowane dla kompatybilności wstecznej
i nie mają żadnego znaczenia w SQL Server 2012
Creating Full-Text Indexes
CREATE FULLTEXT INDEX ON dbo.Documents
(
docexcerpt Language 1033,
doccontent TYPE COLUMN doctype Language 1033
STATISTICAL_SEMANTICS
)
KEY INDEX PK_Documents ON DocumentsFtCatalog
WITH STOPLIST = SQLStopList,
SEARCH PROPERTY LIST =
WordSearchPropertyList,
CHANGE_TRACKING AUTO;
Creating Full-Text Indexes
• KEY INDEX index_name
Unique key index on a table
• CHANGE_TRACKING [=]
{ MANUAL |AUTO | OFF [, NO POPULATION]}
Konfiguruje czy SQL Server powinien aktualizować full-text
index automatycznie
• STATISTICAL_SEMANTICS
Tworzy dodatkową frazę kluczową i dokument podobieństwa
indeksów, które są częścią statystycznego indeksowania
semantycznego
Wyszukiwanie semantyczne
• Pozwala na głębsze wniknięcie do dokumentów:
– Indeksowanie statystyczne zależnych fraz kluczowych
• Wykorzystanie fraz kluczowych służy:
– Wyszukiwaniu dokumentów podobnych lub powiązanych
• Semantic search rozszerza możliwości wyszukiwania pełnotekstowego
• Wymagania:
– Zainstalowana baza danych Semantic Language Statistics
Dostępna na płycie z instalatorem SQL Server w folderze:
x64SetupSemanticLanguageDatabase.msi
DEMO #1
CREATING FULL-TEXT CATALOGS AND INDEXES
Using the CONTAINS Predicate
Używając predykatu CONTAINS można wyszukiwać:
• Słowa i frazy w tekście
• Dokładne lub przybliżone dopasowania
• Formy fleksyjne wyrazów
• Tekst, w którym dwa wyrazy są blisko siebie
• Synonimy poszukiwanych wyrazów
• Przedrostków wyrazów
Można również stosować „wagi” dla poszczególnych słów.
Predykat CONTAINS jest stosowany w klauzuli WHERE.
Using the FREETEXT Predicate
• Mniej precyzyjny, zwraca więcej wyników (wierszy)
• Dużo prostsza forma zapytania
• Zwracane wartości:
– Pasujące do znaczenia frazy
– Nie tylko dokładne słowa
Silnik SQL Server:
1) Wykonuje dzielenie wyrazów (word breaking) frazy
2) Generuje formy fleksyjne
3) Identyfikuje listę rozszerzeń i zastąpień (thesaurus)
4) Znajduje wszystkie powyższe wyrazy
DEMO #2
USING THE CONTAINS AND FREETEXT PREDICATES
DEMO #3
WYSZUKIWARKA SQLOOGLE
TEST
Review #1
• Które elementy wyszukiwania pełnotekstowego
pozwalają uniknąć indeksowania niechcianych
wyrazów?
A. Stopwords
B. Thesaurus
C. Stemmer
D. Stoplists
Review #2
• Jaką bazę danych trzeba zainstalować aby włączyć
wyszukiwanie semantyczne?
A. msdb
B. distribution
C. semanticsdb
D. tempdb
Review #3
• Jak można utworzyć synonimy dla wyszukiwanych
słów?
A. Edytując plik Tezaurus
B. Tworząc tabelę Tezaurus
C. Używając stopwords dla synonimów
D. Wyszukiwanie pełnotekstowe nie wspiera synonimów
Answers
• Review #1
–Correct Answers: A and D
• Review #2
– Correct Answer: C
• Review #3
– Correct Answer: A
Podsumowanie (hasłowo)
• Full-Text Catalog (in Storage folder)
• Full-Text Indexes
• Reguły analizy językowej specyficzne dla języka
• StopLists & StopWords
• Plik Tezaurus (synonimy i zastąpienia)
• CONTAINS Predicate
• FREETEXT Predicate
Q&A
ANY
QUESTIONS
Materiały
• Exam 70-461: „Querying Microsoft SQL Server 2012”
Itzik Ben-Gan, Dejan Sarka, Ron Talmage
• http://msdn.microsoft.com/en-us/library/ms142571(v=sql.110).aspx
DZIĘKUJĘ ZA UWAGĘ
Zapraszam do kontaktu
kamil@nowinski.net
kamil.nowinski
http://pl.linkedin.com/in/kamilnowinski/
@NowinskiK

More Related Content

Similar to Wyszukiwanie pełnotekstowe w SQL Server

Bem i SCSS na przykladzie inuit.css
Bem i SCSS na przykladzie inuit.cssBem i SCSS na przykladzie inuit.css
Bem i SCSS na przykladzie inuit.cssMichał Załęcki
 
1st Silesian Code Camp - Czy jesteśmy gotowi na SQL Azure?
1st Silesian Code Camp - Czy jesteśmy gotowi na SQL Azure?1st Silesian Code Camp - Czy jesteśmy gotowi na SQL Azure?
1st Silesian Code Camp - Czy jesteśmy gotowi na SQL Azure?Tobias Koprowski
 
OceanQuery - język zapytań edytora raportów
OceanQuery - język zapytań edytora raportówOceanQuery - język zapytań edytora raportów
OceanQuery - język zapytań edytora raportówmatmis
 
20160316 techstolica - cloudstorage -tidk
20160316  techstolica - cloudstorage -tidk20160316  techstolica - cloudstorage -tidk
20160316 techstolica - cloudstorage -tidkŁukasz Grala
 
Marta Sztybor - Zorientowany obiektowo CSS, czyli jak tworzyć layouty aplikac...
Marta Sztybor - Zorientowany obiektowo CSS, czyli jak tworzyć layouty aplikac...Marta Sztybor - Zorientowany obiektowo CSS, czyli jak tworzyć layouty aplikac...
Marta Sztybor - Zorientowany obiektowo CSS, czyli jak tworzyć layouty aplikac...The Awwwesomes
 
Jak szybko przetwarzasz hurtowe ilości XML?
Jak szybko przetwarzasz hurtowe ilości XML?Jak szybko przetwarzasz hurtowe ilości XML?
Jak szybko przetwarzasz hurtowe ilości XML?Bartosz Ratajczyk
 
Bazy danych SQL. Teoria i praktyka
Bazy danych SQL. Teoria i praktykaBazy danych SQL. Teoria i praktyka
Bazy danych SQL. Teoria i praktykaWydawnictwo Helion
 
JDD2015: Lucene - od wyszukiwarki po analizę danych - Zbyszko Papierski
JDD2015: Lucene - od wyszukiwarki po analizę danych - Zbyszko Papierski JDD2015: Lucene - od wyszukiwarki po analizę danych - Zbyszko Papierski
JDD2015: Lucene - od wyszukiwarki po analizę danych - Zbyszko Papierski PROIDEA
 
SQL Server 2005. Programowanie. Od podstaw
SQL Server 2005. Programowanie. Od podstawSQL Server 2005. Programowanie. Od podstaw
SQL Server 2005. Programowanie. Od podstawWydawnictwo Helion
 
Zautomatyzuj swój proces wdrażania projektów SSIS
Zautomatyzuj swój proces wdrażania projektów SSISZautomatyzuj swój proces wdrażania projektów SSIS
Zautomatyzuj swój proces wdrażania projektów SSISBartosz Ratajczyk
 
Mongo db baza danych zorientowana dokumentowo
Mongo db  baza danych zorientowana dokumentowo Mongo db  baza danych zorientowana dokumentowo
Mongo db baza danych zorientowana dokumentowo XSolve
 
Seo Surgery Polska 2 by Damian Salkowski
Seo Surgery Polska 2 by Damian SalkowskiSeo Surgery Polska 2 by Damian Salkowski
Seo Surgery Polska 2 by Damian SalkowskiAnton Shulke
 
Liquibase - database structure versioning
Liquibase - database structure versioningLiquibase - database structure versioning
Liquibase - database structure versioningPiotr Pelczar
 
Jak nie narobić sobie problemów korzystając z EntityFramework
Jak nie narobić sobie problemów korzystając z EntityFrameworkJak nie narobić sobie problemów korzystając z EntityFramework
Jak nie narobić sobie problemów korzystając z EntityFrameworkHighWheelSoftware
 
DynamoDB – podstawy modelowania danych dla opornych
DynamoDB – podstawy modelowania danych dla opornychDynamoDB – podstawy modelowania danych dla opornych
DynamoDB – podstawy modelowania danych dla opornychThe Software House
 
Szybkie wprowadzenie do eksploracji danych z pakietem Weka
Szybkie wprowadzenie do eksploracji danych z pakietem WekaSzybkie wprowadzenie do eksploracji danych z pakietem Weka
Szybkie wprowadzenie do eksploracji danych z pakietem WekaSages
 
JSON, REST API
JSON, REST APIJSON, REST API
JSON, REST API3camp
 
4Developers 2015: Baza danych w aplikacji typu SaaS - błędy w projektowaniu -...
4Developers 2015: Baza danych w aplikacji typu SaaS - błędy w projektowaniu -...4Developers 2015: Baza danych w aplikacji typu SaaS - błędy w projektowaniu -...
4Developers 2015: Baza danych w aplikacji typu SaaS - błędy w projektowaniu -...PROIDEA
 

Similar to Wyszukiwanie pełnotekstowe w SQL Server (20)

Bem i SCSS na przykladzie inuit.css
Bem i SCSS na przykladzie inuit.cssBem i SCSS na przykladzie inuit.css
Bem i SCSS na przykladzie inuit.css
 
Access 2003 PL. Biblia
Access 2003 PL. BibliaAccess 2003 PL. Biblia
Access 2003 PL. Biblia
 
Access 2003 PL. Biblia
Access 2003 PL. BibliaAccess 2003 PL. Biblia
Access 2003 PL. Biblia
 
1st Silesian Code Camp - Czy jesteśmy gotowi na SQL Azure?
1st Silesian Code Camp - Czy jesteśmy gotowi na SQL Azure?1st Silesian Code Camp - Czy jesteśmy gotowi na SQL Azure?
1st Silesian Code Camp - Czy jesteśmy gotowi na SQL Azure?
 
OceanQuery - język zapytań edytora raportów
OceanQuery - język zapytań edytora raportówOceanQuery - język zapytań edytora raportów
OceanQuery - język zapytań edytora raportów
 
20160316 techstolica - cloudstorage -tidk
20160316  techstolica - cloudstorage -tidk20160316  techstolica - cloudstorage -tidk
20160316 techstolica - cloudstorage -tidk
 
Marta Sztybor - Zorientowany obiektowo CSS, czyli jak tworzyć layouty aplikac...
Marta Sztybor - Zorientowany obiektowo CSS, czyli jak tworzyć layouty aplikac...Marta Sztybor - Zorientowany obiektowo CSS, czyli jak tworzyć layouty aplikac...
Marta Sztybor - Zorientowany obiektowo CSS, czyli jak tworzyć layouty aplikac...
 
Jak szybko przetwarzasz hurtowe ilości XML?
Jak szybko przetwarzasz hurtowe ilości XML?Jak szybko przetwarzasz hurtowe ilości XML?
Jak szybko przetwarzasz hurtowe ilości XML?
 
Bazy danych SQL. Teoria i praktyka
Bazy danych SQL. Teoria i praktykaBazy danych SQL. Teoria i praktyka
Bazy danych SQL. Teoria i praktyka
 
JDD2015: Lucene - od wyszukiwarki po analizę danych - Zbyszko Papierski
JDD2015: Lucene - od wyszukiwarki po analizę danych - Zbyszko Papierski JDD2015: Lucene - od wyszukiwarki po analizę danych - Zbyszko Papierski
JDD2015: Lucene - od wyszukiwarki po analizę danych - Zbyszko Papierski
 
SQL Server 2005. Programowanie. Od podstaw
SQL Server 2005. Programowanie. Od podstawSQL Server 2005. Programowanie. Od podstaw
SQL Server 2005. Programowanie. Od podstaw
 
Zautomatyzuj swój proces wdrażania projektów SSIS
Zautomatyzuj swój proces wdrażania projektów SSISZautomatyzuj swój proces wdrażania projektów SSIS
Zautomatyzuj swój proces wdrażania projektów SSIS
 
Mongo db baza danych zorientowana dokumentowo
Mongo db  baza danych zorientowana dokumentowo Mongo db  baza danych zorientowana dokumentowo
Mongo db baza danych zorientowana dokumentowo
 
Seo Surgery Polska 2 by Damian Salkowski
Seo Surgery Polska 2 by Damian SalkowskiSeo Surgery Polska 2 by Damian Salkowski
Seo Surgery Polska 2 by Damian Salkowski
 
Liquibase - database structure versioning
Liquibase - database structure versioningLiquibase - database structure versioning
Liquibase - database structure versioning
 
Jak nie narobić sobie problemów korzystając z EntityFramework
Jak nie narobić sobie problemów korzystając z EntityFrameworkJak nie narobić sobie problemów korzystając z EntityFramework
Jak nie narobić sobie problemów korzystając z EntityFramework
 
DynamoDB – podstawy modelowania danych dla opornych
DynamoDB – podstawy modelowania danych dla opornychDynamoDB – podstawy modelowania danych dla opornych
DynamoDB – podstawy modelowania danych dla opornych
 
Szybkie wprowadzenie do eksploracji danych z pakietem Weka
Szybkie wprowadzenie do eksploracji danych z pakietem WekaSzybkie wprowadzenie do eksploracji danych z pakietem Weka
Szybkie wprowadzenie do eksploracji danych z pakietem Weka
 
JSON, REST API
JSON, REST APIJSON, REST API
JSON, REST API
 
4Developers 2015: Baza danych w aplikacji typu SaaS - błędy w projektowaniu -...
4Developers 2015: Baza danych w aplikacji typu SaaS - błędy w projektowaniu -...4Developers 2015: Baza danych w aplikacji typu SaaS - błędy w projektowaniu -...
4Developers 2015: Baza danych w aplikacji typu SaaS - błędy w projektowaniu -...
 

More from Kamil Nowinski

The databases in SSDT: A work with project and best practices
The databases in SSDT: A work with project and best practicesThe databases in SSDT: A work with project and best practices
The databases in SSDT: A work with project and best practicesKamil Nowinski
 
Nowości w zakresie bezpieczeństwa w SQL Server 2016
Nowości w zakresie bezpieczeństwa w SQL Server 2016Nowości w zakresie bezpieczeństwa w SQL Server 2016
Nowości w zakresie bezpieczeństwa w SQL Server 2016Kamil Nowinski
 
Wprowadzenie do modelowania danych w PowerPivot
Wprowadzenie do modelowania danych w PowerPivotWprowadzenie do modelowania danych w PowerPivot
Wprowadzenie do modelowania danych w PowerPivotKamil Nowinski
 
Zasilanie hurtowni danych w SSIS w praktyce
Zasilanie hurtowni danych w SSIS w praktyceZasilanie hurtowni danych w SSIS w praktyce
Zasilanie hurtowni danych w SSIS w praktyceKamil Nowinski
 
SQLDay 2014 - Change Tracking & Change Data Capture
SQLDay 2014 - Change Tracking & Change Data CaptureSQLDay 2014 - Change Tracking & Change Data Capture
SQLDay 2014 - Change Tracking & Change Data CaptureKamil Nowinski
 

More from Kamil Nowinski (6)

The databases in SSDT: A work with project and best practices
The databases in SSDT: A work with project and best practicesThe databases in SSDT: A work with project and best practices
The databases in SSDT: A work with project and best practices
 
Nowości w zakresie bezpieczeństwa w SQL Server 2016
Nowości w zakresie bezpieczeństwa w SQL Server 2016Nowości w zakresie bezpieczeństwa w SQL Server 2016
Nowości w zakresie bezpieczeństwa w SQL Server 2016
 
Wprowadzenie do modelowania danych w PowerPivot
Wprowadzenie do modelowania danych w PowerPivotWprowadzenie do modelowania danych w PowerPivot
Wprowadzenie do modelowania danych w PowerPivot
 
Zasilanie hurtowni danych w SSIS w praktyce
Zasilanie hurtowni danych w SSIS w praktyceZasilanie hurtowni danych w SSIS w praktyce
Zasilanie hurtowni danych w SSIS w praktyce
 
SQLDay 2014 - Change Tracking & Change Data Capture
SQLDay 2014 - Change Tracking & Change Data CaptureSQLDay 2014 - Change Tracking & Change Data Capture
SQLDay 2014 - Change Tracking & Change Data Capture
 
Change Tracking
Change TrackingChange Tracking
Change Tracking
 

Wyszukiwanie pełnotekstowe w SQL Server

  • 1. Wyszukiwanie pełnotekstowe (Full-Text Search) w SQL Server Kamil Nowiński kamil@nowinski.net
  • 2. Kamil Nowiński • Konsultant, freelancer, SQL Server expert • Ostatnio jako architekt w projekcie hurtowni danych „Ari@dna2” programu e-Cło dla Ministerstwa Finansów • Programista > 20 lat (VB6, VB.NET, C#, .NET Framework) • Ponad 10-letnie doświadczenie w SQL Server (DEV/DBA) • Bazy danych: Microsoft SQL 2000 – 2012+ • Członek komisji rewizyjnej Stowarzyszenia PLSSUG, • Współorganizator konferencji SQLDay • Certyfikaty SQL Server: MCITP, MCP, MCTS, MCSA, MCSE • Zainteresowania: • Optymalizacja baz danych, Hurtownie danych, SSIS • Bieganie, Fotografia cyfrowa (Nikon D-90, Adobe Lightroom)
  • 3. Agenda Wprowadzenie Full-Text Search Components Creating and Managing Full-Text Catalogs & Indexes Using the CONTAINS & FREETEXT Predicates Wyszukiwarka Google
  • 4. Możliwości wyszukiwania • Simple terms – one or more specific words or phrases • Perfix terms, which are terms the words of phrases begin with • Generation terms, meaning inflectional forms of words • Proximity terms (or words or phrases) close to another word/phrase • Thesaurus terms, or synonyms of a word • Weighted terms, which are words or phrases that use values with your custom weight • Statistical semantic search, or key phrases in a document • Similar documents, where similarity is defined by semantic key phrases
  • 5. Możliwości wyszukiwania Kolumny typu: • CHAR • VARCHAR • NCHAR • NVARCHAR • TEXT • NTEXT Kolumny typu: • IMAGE * • XML * • VARBINARY(MAX) * * Pozwalają przechowywać całe dokumenty. Wymagana do tego dodatkowa kolumna z rozszerzeniem pliku (typ)
  • 6. Full-Text Search Components • Wymagana instalacja komponentu na instancji SQL Server • Stosowanie filtrów (ifilters) dla dokumentów – Zaczerpnięcie tylko informacji tekstowych – Usunięcie formatowania z dokumentu(ów) • Zainstalowane filtry: – Wiele popularnych formatów jest zainstalowanych domyślnie – Filtry dla dokumentów w formacie MS Office 2010 i nowszych: http://www.microsoft.com/en-us/download/details.aspx?id=17062 – Po instalacji nowe filtry wymagają rejestracji w SQL Server:
  • 7. Linguistic analysis • Dane w indeksach Full-Text podlegają analizie językowej • Analiza językowa wymaga znalezienia granicy słowa (word-breaking) oraz znajomości odmian czasowników (stemming) • Word breakers & stemmers są specyficzne dla każdego języka • Zatem reguły analizy językowej również • Default Full-Text language: – Setup sets to the language of your instance – English If language is not supported or you use a nonlocalized version of SQL Server
  • 8. Stoplists & stopwords • Stoplist-a może zawierać wiele stopword’s • Pozwala zapobiegać indeksowaniu (a dokładniej wyszukiwaniu) • Przykłady: – łączniki: i, lub, oraz, – Słowa często występujące w danej dziedzinie (np. SQL) • Jak sprawdzić:
  • 9. Synonimy i plik Tezaurus (thesaurus) • Wyszukiwanie odbywa się wg podanych słów • Wyszukiwanie odbywa się również wśród synonimów • SQL Server korzysta z bazy synonimów zdefiniowanych w plikach XML (thesaurus files) • Każdy język posiada swój odrębny plik Tezaurus • Edycja pliku pozwala na konfigurację: – Diacritics_sensitive – Expansion (autor, pisarz) – Replacement (Win 2k8 -> Windows 2008) • Po edycji pliku musi zostać on załadowany przez SQL Server:
  • 10. Creating Full-Text Catalogs CREATE FULLTEXT CATALOG catalog_name [ON FILEGROUP filegroup] [IN PATH 'rootpath'] [WITH <catalog_option>] [AS DEFAULT] [AUTHORIZATION owner_name] <catalog_option>::= ACCENT_SENSITIVITY = {ON|OFF} • ON FILEGROUP, IN PATH zostały zachowane dla kompatybilności wstecznej i nie mają żadnego znaczenia w SQL Server 2012
  • 11. Creating Full-Text Indexes CREATE FULLTEXT INDEX ON dbo.Documents ( docexcerpt Language 1033, doccontent TYPE COLUMN doctype Language 1033 STATISTICAL_SEMANTICS ) KEY INDEX PK_Documents ON DocumentsFtCatalog WITH STOPLIST = SQLStopList, SEARCH PROPERTY LIST = WordSearchPropertyList, CHANGE_TRACKING AUTO;
  • 12. Creating Full-Text Indexes • KEY INDEX index_name Unique key index on a table • CHANGE_TRACKING [=] { MANUAL |AUTO | OFF [, NO POPULATION]} Konfiguruje czy SQL Server powinien aktualizować full-text index automatycznie • STATISTICAL_SEMANTICS Tworzy dodatkową frazę kluczową i dokument podobieństwa indeksów, które są częścią statystycznego indeksowania semantycznego
  • 13. Wyszukiwanie semantyczne • Pozwala na głębsze wniknięcie do dokumentów: – Indeksowanie statystyczne zależnych fraz kluczowych • Wykorzystanie fraz kluczowych służy: – Wyszukiwaniu dokumentów podobnych lub powiązanych • Semantic search rozszerza możliwości wyszukiwania pełnotekstowego • Wymagania: – Zainstalowana baza danych Semantic Language Statistics Dostępna na płycie z instalatorem SQL Server w folderze: x64SetupSemanticLanguageDatabase.msi
  • 14. DEMO #1 CREATING FULL-TEXT CATALOGS AND INDEXES
  • 15. Using the CONTAINS Predicate Używając predykatu CONTAINS można wyszukiwać: • Słowa i frazy w tekście • Dokładne lub przybliżone dopasowania • Formy fleksyjne wyrazów • Tekst, w którym dwa wyrazy są blisko siebie • Synonimy poszukiwanych wyrazów • Przedrostków wyrazów Można również stosować „wagi” dla poszczególnych słów. Predykat CONTAINS jest stosowany w klauzuli WHERE.
  • 16. Using the FREETEXT Predicate • Mniej precyzyjny, zwraca więcej wyników (wierszy) • Dużo prostsza forma zapytania • Zwracane wartości: – Pasujące do znaczenia frazy – Nie tylko dokładne słowa Silnik SQL Server: 1) Wykonuje dzielenie wyrazów (word breaking) frazy 2) Generuje formy fleksyjne 3) Identyfikuje listę rozszerzeń i zastąpień (thesaurus) 4) Znajduje wszystkie powyższe wyrazy
  • 17. DEMO #2 USING THE CONTAINS AND FREETEXT PREDICATES
  • 19. TEST
  • 20. Review #1 • Które elementy wyszukiwania pełnotekstowego pozwalają uniknąć indeksowania niechcianych wyrazów? A. Stopwords B. Thesaurus C. Stemmer D. Stoplists
  • 21. Review #2 • Jaką bazę danych trzeba zainstalować aby włączyć wyszukiwanie semantyczne? A. msdb B. distribution C. semanticsdb D. tempdb
  • 22. Review #3 • Jak można utworzyć synonimy dla wyszukiwanych słów? A. Edytując plik Tezaurus B. Tworząc tabelę Tezaurus C. Używając stopwords dla synonimów D. Wyszukiwanie pełnotekstowe nie wspiera synonimów
  • 23. Answers • Review #1 –Correct Answers: A and D • Review #2 – Correct Answer: C • Review #3 – Correct Answer: A
  • 24. Podsumowanie (hasłowo) • Full-Text Catalog (in Storage folder) • Full-Text Indexes • Reguły analizy językowej specyficzne dla języka • StopLists & StopWords • Plik Tezaurus (synonimy i zastąpienia) • CONTAINS Predicate • FREETEXT Predicate
  • 26. Materiały • Exam 70-461: „Querying Microsoft SQL Server 2012” Itzik Ben-Gan, Dejan Sarka, Ron Talmage • http://msdn.microsoft.com/en-us/library/ms142571(v=sql.110).aspx
  • 27. DZIĘKUJĘ ZA UWAGĘ Zapraszam do kontaktu kamil@nowinski.net kamil.nowinski http://pl.linkedin.com/in/kamilnowinski/ @NowinskiK

Editor's Notes

  1. http://msdn.microsoft.com/en-us/library/ms142509.aspx For a given language, a word breaker identifies individual words by determining where word boundaries exist based on the lexical rules of the language. Each word (also known as a token) is inserted into the full-text index using a compressed representation to reduce its size. The stemmer generates inflectional forms of a particular word based on the rules of that language (for example, "running", "ran", and "runner" are various forms of the word "run").
  2. http://msdn.microsoft.com/en-us/library/ms142509.aspx For a given language, a word breaker identifies individual words by determining where word boundaries exist based on the lexical rules of the language. Each word (also known as a token) is inserted into the full-text index using a compressed representation to reduce its size. The stemmer generates inflectional forms of a particular word based on the rules of that language (for example, "running", "ran", and "runner" are various forms of the word "run").
  3. http://msdn.microsoft.com/en-us/library/ms142509.aspx For a given language, a word breaker identifies individual words by determining where word boundaries exist based on the lexical rules of the language. Each word (also known as a token) is inserted into the full-text index using a compressed representation to reduce its size. The stemmer generates inflectional forms of a particular word based on the rules of that language (for example, "running", "ran", and "runner" are various forms of the word "run").