SlideShare a Scribd company logo
Media Partners
Wyszukiwanie pełnotekstowe
(Full-Text Search)
w SQL Server
Kamil Nowiński
PLSSUG Wrocław
kamil.nowinski@plssug.org.pl
Tomasz Libera
PLSSUG Kraków
tomasz.libera@plssug.org.pl
SQLDay 2015
Kamil Nowiński Tomasz Libera
• DB Developer w WSZiB w Krakowie
• Lider PLSSUG Kraków
• Certyfikaty:
• MCT
• MCSE Data Platform
• MCITP-DBA, MCITP-DD
• Zainteresowania:
• Pasjonat kolarstwa
górskiego
i maratonów MTB
• Senior SQL/BI Developer w
AlternativeNetworks (UK)
• Programista > 20 lat
(VB6, VB.NET, C#, .NET Framework)
• Ponad 10-letnie doświadczenie jako DEV/DBA
• Członek komisji rewizyjnej PLSSUG,
• Co-Leader PLSSUG Wrocław
• Certyfikaty SQL Server:
MCITP, MCP, MCTS, MCSA,
MCSE Data Platform
• Zainteresowania:
• Bieganie – obecnie trening do półmaratonu,
• Fotografia cyfrowa
(Nikon D-90, Adobe Lightroom)
SQLDay 2015
Agenda
Wprowadzenie
LIKE to za mało
Możliwości, Historia
Architektura, Komponenty FTS
Zapytania - CONTAINS & FREETEXT
Indeksy FTS – budowa, tworzenie
Wyrazy szumy, słownik synonimów, wyszukiwanie semantyczne
Wyszukiwarka SQLoogle!
SQLDay 2015
DEMO #1
Like to za mało!
SQLDay 2015
Możliwości
• Wyszukiwanie danych tesktowych zapisanych w
– kolumnach tekstowych (varchar, nvarchar)
– danych binarnych w obsługiwanych formatach (txt, doc, docx, pdf...)
• Dostępne już w bezpłatnej edycji SQL Server Express
• Wyrażenia proste – jedno bądź wiele słów
• Poszukiwanie różnych form gramatycznych
• Wyrazy bliskoznaczne, synonimy słów
• Sąsiedztwo wyrażeń (słów lub fraz)
• Ważenie wyrażeń
• Pozycjonowanie (rangowanie) wyników
• Wyszukiwanie semantyczne
SQLDay 2015
Historia
SQL 7 SQL 2005 SQL 2008 SQL 2012 SQL 2014
• Pierwsza odsłona FTS
• Oparty o Microsoft Indexing
Service
• Indeksy, noise words poza
bazą danych (osobne kopie
zapasowe)
• iFTS
• Nowe typy danych –
varchar(max), varbinary(max)
– lepsza wydajność
• Nowe widoki systemowe
• Obsługa XML
• Zintegrowane kopie zapasowe indeksów
• DDL Statements (CREATE FULLTEXT
CATALOG, CREATE FULLTEXT INDEX…
• Thesaurus
• Natywna obsługa języka polskiego
• Możliwość określania odległości
między szukanymi wyrazami (NEAR)
• Kwiecień 2015:
Azure SQL Database
(preview)
SQLDay 2015
Pro Full-Text Search in SQL Server 2008, Michael Coles, Apress
Architektura
SQLDay 2015
Zapytania FTS
• Operatory porównania wykorzystywane w części WHERE zapytania
– CONTAINS
– FREETEXT
• Funkcje tabelaryczne (w części FROM), umożliwiają rangowanie
– CONTAINSTABLE
– FREETEXTABLE
SQLDay 2015
DEMO #2
Zapytania
SQLDay 2015
Predykaty CONTAINS & FREETEXT
CONTAINS FREETEXT
Formy fleksyjne wyrazów Na żądanie
FORMSOF(INFLECTIONAL, wyraz)
Zawsze
Thesaurus (w tym synonimy) Na żądanie
FORMSOF(THESAURUS, wyraz)
Zawsze
Wagi dla wyrazów TAK NIE
Operatory logiczne TAK NIE
Wyrazy blisko siebie TAK NIE
Przedrostki wyrazów (prefix) TAK NIE
Zapytanie Złożone, większa kontrola Dużo prostsze, mniejsza kontrola
Razem rezultaty Mniejsza liczba wyników
Dokładniejsze
Większa liczba wyników
Mniej precyzyjne
SQLDay 2015
Wykonywanie zapytania pełnotekstowego
Silnik Full-Text Search:
1) Wykonuje dzielenie wyrazów (word breaker) frazy
2) Generuje formy fleksyjne (steamer)
3) Identyfikuje listę rozszerzeń i zastąpień (thesaurus)
4) Znajduje wszystkie powyższe wyrazy
SQLDay 2015
Budowa indeksu
display_term DocID occurrence special_term
dom 1 1 Exact Match
to 1 2 Noise Word
nie 1 3 Noise Word
tylko 1 4 Exact Match
budynek 1 5 Exact Match
dom 1 14 Exact Match
to 1 15 Noise Word
mama 1 16 Exact Match
tata 1 17 Exact Match
i 1 18 Noise Word
ja 1 19 Noise Word
to 2 1 Noise Word
moja 2 2 Noise Word
babcia 2 3 Exact Match
i 2 4 Noise Word
maly 2 5 Exact Match
brat 2 6 Exact Match
http://pliki.naszelementarz.men.gov.pl/elementarz/naszelementarz.pdf
SQLDay 2015
Aktualizacja (przebudowa indeksu)
Asynchroniczna:
• Pełna
ALTER FULLTEXT INDEX ON NewsPL
START FULL POPULATION
• Przyrostowa – tylko wiersze zmodyfikowane od ostatniego wypełniania
(wymaga kolumny RowVersion w tabeli)
ALTER FULLTEXT INDEX ON NewsPL
START INCREMENTAL POPULATION
• Tylko wiersze zmodyfikowane od ostatniego wypełniania, wymaga
CHANGE_TRACKING (nie wymaga RowVersion)
ALTER FULLTEXT INDEX ON NewsPL
START UPDATE POPULATION
SQLDay 2015
Obsługa plików docx
• MS Office 2010 Filter Packs
• sp_fulltext_service 'load_os_resources', 1
• Restart instancji
SQLDay 2015
Obsługa plików PDF
http://www.adobe.com/support/downloads/detail.jsp?ftpID=5542
http://www.pdflib.com/download/tet-pdf-ifilter/
http://www.foxitsoftware.com/products/ifilter/
SQLDay 2015
DEMO #3
katalogi, Indeksy
SQLDay 2015
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ć:
SQLDay 2015
Synonimy i plik tezaurus (thesaurus)
• Przechowywane na dysku MSSQLFTDATA tsXXX.xml - (XXX - ENU,PLN)
• tsglobal - globalny tezaurus- wykorzystywany dodatkowo, bez względu na jaki język
– jeśli poszukiwany wyraz znajduje się w globalnym i lokalnym (specyficznym dla języka) -
pierwszeństwo ma lokalny
• Edycja pliku pozwala na konfigurację:
– Diacritics_sensitive
– Expansion (autor, pisarz)
wyszukiwane są również słowa bliskoznaczne
– Replacement (Win 2k8 -> Windows 2008)
wyszukiwane słowo jest zastępowane słowem bliskoznacznym
• Po edycji pliku musi zostać on załadowany przez SQL Server:
SQLDay 2015
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
SQLDay 2015
DEMO #4
stoplist, thesaurus, DMV
SQLDay 2015
DEMO #5
wyszukiwarka SQLoogle
http://youtu.be/LY-X1LaPFp4
SQLDay 2015
Q&A
ANY
QUESTIONS
DZIĘKUJEMY ZA UWAGĘ!
Kamil Nowiński
PLSSUG Wrocław
kamil.nowinski@plssug.org.pl
@NowinskiK
Tomasz Libera
PLSSUG Kraków
tomasz.libera@plssug.org.pl
@tomasz_libera
PLIKI
http://1drv.ms/1AsZoID
Media Partners

More Related Content

Viewers also liked

26th_Meetup_of_PLSSUG_WROCLAW-ColumnStore_Indexes_byBeataZalewa_scripts
26th_Meetup_of_PLSSUG_WROCLAW-ColumnStore_Indexes_byBeataZalewa_scripts26th_Meetup_of_PLSSUG_WROCLAW-ColumnStore_Indexes_byBeataZalewa_scripts
26th_Meetup_of_PLSSUG_WROCLAW-ColumnStore_Indexes_byBeataZalewa_scriptsPolish SQL Server User Group
 
CISSPDAY 2011 - 2 AM A Disaster just Began
CISSPDAY 2011 - 2 AM A Disaster just BeganCISSPDAY 2011 - 2 AM A Disaster just Began
CISSPDAY 2011 - 2 AM A Disaster just BeganTobias Koprowski
 
SQLDay2013_Denny Cherry - Table indexing for the .NET Developer
SQLDay2013_Denny Cherry - Table indexing for the .NET DeveloperSQLDay2013_Denny Cherry - Table indexing for the .NET Developer
SQLDay2013_Denny Cherry - Table indexing for the .NET DeveloperPolish SQL Server User Group
 
38Spotkanie_PLSSUGweWroclawiu_Keynote
38Spotkanie_PLSSUGweWroclawiu_Keynote38Spotkanie_PLSSUGweWroclawiu_Keynote
38Spotkanie_PLSSUGweWroclawiu_Keynote
Tobias Koprowski
 
SQLDay2013_DennyCherry_GettingSQLServiceBrokerUp&Running
SQLDay2013_DennyCherry_GettingSQLServiceBrokerUp&RunningSQLDay2013_DennyCherry_GettingSQLServiceBrokerUp&Running
SQLDay2013_DennyCherry_GettingSQLServiceBrokerUp&RunningPolish SQL Server User Group
 
SQLDay2013_PawełPotasiński_ParallelDataWareHouse
SQLDay2013_PawełPotasiński_ParallelDataWareHouseSQLDay2013_PawełPotasiński_ParallelDataWareHouse
SQLDay2013_PawełPotasiński_ParallelDataWareHousePolish SQL Server User Group
 
GoldenLine.pl - Od Startupu do... Startupu :-)
GoldenLine.pl - Od Startupu do... Startupu :-)GoldenLine.pl - Od Startupu do... Startupu :-)
GoldenLine.pl - Od Startupu do... Startupu :-)
Karol Traczykowski
 
SQL DAY 2012 | DEV Track | Session 8 - Getting Dimension with Data by C.Tecta...
SQL DAY 2012 | DEV Track | Session 8 - Getting Dimension with Data by C.Tecta...SQL DAY 2012 | DEV Track | Session 8 - Getting Dimension with Data by C.Tecta...
SQL DAY 2012 | DEV Track | Session 8 - Getting Dimension with Data by C.Tecta...Polish SQL Server User Group
 
Maintenance_Plans_Zupełnie_Znienacka
Maintenance_Plans_Zupełnie_ZnienackaMaintenance_Plans_Zupełnie_Znienacka
Maintenance_Plans_Zupełnie_Znienacka
Tobias Koprowski
 
Kompletny przewodnik po SQL injection dla developerów PHP (i nie tylko)
Kompletny przewodnik po SQL injection dla developerów PHP (i nie tylko)Kompletny przewodnik po SQL injection dla developerów PHP (i nie tylko)
Kompletny przewodnik po SQL injection dla developerów PHP (i nie tylko)
Krzysztof Kotowicz
 

Viewers also liked (17)

SQLDay2013_ChrisWebb_DAXMD
SQLDay2013_ChrisWebb_DAXMDSQLDay2013_ChrisWebb_DAXMD
SQLDay2013_ChrisWebb_DAXMD
 
SQLDay2013_GrzegorzStolecki_RealTimeOLAP
SQLDay2013_GrzegorzStolecki_RealTimeOLAPSQLDay2013_GrzegorzStolecki_RealTimeOLAP
SQLDay2013_GrzegorzStolecki_RealTimeOLAP
 
26th_Meetup_of_PLSSUG_WROCLAW-ColumnStore_Indexes_byBeataZalewa_scripts
26th_Meetup_of_PLSSUG_WROCLAW-ColumnStore_Indexes_byBeataZalewa_scripts26th_Meetup_of_PLSSUG_WROCLAW-ColumnStore_Indexes_byBeataZalewa_scripts
26th_Meetup_of_PLSSUG_WROCLAW-ColumnStore_Indexes_byBeataZalewa_scripts
 
SQLDay2013_MarcinSzeliga_StoredProcedures
SQLDay2013_MarcinSzeliga_StoredProceduresSQLDay2013_MarcinSzeliga_StoredProcedures
SQLDay2013_MarcinSzeliga_StoredProcedures
 
SQLDay2013_MarekAdamczuk_Kursory
SQLDay2013_MarekAdamczuk_KursorySQLDay2013_MarekAdamczuk_Kursory
SQLDay2013_MarekAdamczuk_Kursory
 
CISSPDAY 2011 - 2 AM A Disaster just Began
CISSPDAY 2011 - 2 AM A Disaster just BeganCISSPDAY 2011 - 2 AM A Disaster just Began
CISSPDAY 2011 - 2 AM A Disaster just Began
 
SQLDay2013_Denny Cherry - Table indexing for the .NET Developer
SQLDay2013_Denny Cherry - Table indexing for the .NET DeveloperSQLDay2013_Denny Cherry - Table indexing for the .NET Developer
SQLDay2013_Denny Cherry - Table indexing for the .NET Developer
 
38Spotkanie_PLSSUGweWroclawiu_Keynote
38Spotkanie_PLSSUGweWroclawiu_Keynote38Spotkanie_PLSSUGweWroclawiu_Keynote
38Spotkanie_PLSSUGweWroclawiu_Keynote
 
SQLDay2013_DennyCherry_GettingSQLServiceBrokerUp&Running
SQLDay2013_DennyCherry_GettingSQLServiceBrokerUp&RunningSQLDay2013_DennyCherry_GettingSQLServiceBrokerUp&Running
SQLDay2013_DennyCherry_GettingSQLServiceBrokerUp&Running
 
SQLDay2013_GrzegorzStolecki_KonsolidacjaBI
SQLDay2013_GrzegorzStolecki_KonsolidacjaBISQLDay2013_GrzegorzStolecki_KonsolidacjaBI
SQLDay2013_GrzegorzStolecki_KonsolidacjaBI
 
SQLDay2013_PawełPotasiński_ParallelDataWareHouse
SQLDay2013_PawełPotasiński_ParallelDataWareHouseSQLDay2013_PawełPotasiński_ParallelDataWareHouse
SQLDay2013_PawełPotasiński_ParallelDataWareHouse
 
SQLDay2013_ChrisWebb_CubeDesign&PerformanceTuning
SQLDay2013_ChrisWebb_CubeDesign&PerformanceTuningSQLDay2013_ChrisWebb_CubeDesign&PerformanceTuning
SQLDay2013_ChrisWebb_CubeDesign&PerformanceTuning
 
GoldenLine.pl - Od Startupu do... Startupu :-)
GoldenLine.pl - Od Startupu do... Startupu :-)GoldenLine.pl - Od Startupu do... Startupu :-)
GoldenLine.pl - Od Startupu do... Startupu :-)
 
SQL DAY 2012 | DEV Track | Session 8 - Getting Dimension with Data by C.Tecta...
SQL DAY 2012 | DEV Track | Session 8 - Getting Dimension with Data by C.Tecta...SQL DAY 2012 | DEV Track | Session 8 - Getting Dimension with Data by C.Tecta...
SQL DAY 2012 | DEV Track | Session 8 - Getting Dimension with Data by C.Tecta...
 
Maintenance_Plans_Zupełnie_Znienacka
Maintenance_Plans_Zupełnie_ZnienackaMaintenance_Plans_Zupełnie_Znienacka
Maintenance_Plans_Zupełnie_Znienacka
 
Kompletny przewodnik po SQL injection dla developerów PHP (i nie tylko)
Kompletny przewodnik po SQL injection dla developerów PHP (i nie tylko)Kompletny przewodnik po SQL injection dla developerów PHP (i nie tylko)
Kompletny przewodnik po SQL injection dla developerów PHP (i nie tylko)
 
Śniadanie Daje Moc
Śniadanie Daje MocŚniadanie Daje Moc
Śniadanie Daje Moc
 

Similar to Sql day2015 fts

Wyszukiwanie pełnotekstowe w SQL Server
Wyszukiwanie pełnotekstowe w SQL ServerWyszukiwanie pełnotekstowe w SQL Server
Wyszukiwanie pełnotekstowe w SQL Server
Kamil Nowinski
 
20060416 Azure Boot Camp 2016- Azure Data Lake Storage and Analytics
20060416   Azure Boot Camp 2016- Azure Data Lake Storage and Analytics20060416   Azure Boot Camp 2016- Azure Data Lake Storage and Analytics
20060416 Azure Boot Camp 2016- Azure Data Lake Storage and Analytics
Łukasz Grala
 
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
 
Podstawy ETL z SSIS
Podstawy ETL z SSISPodstawy ETL z SSIS
Podstawy ETL z SSIS
Bartosz Ratajczyk
 
Microsoft Business Intelligence w 2017 roku
Microsoft Business Intelligence w 2017 rokuMicrosoft Business Intelligence w 2017 roku
Microsoft Business Intelligence w 2017 roku
HighWheelSoftware
 
Migracja I Integracja Bazy
Migracja I Integracja BazyMigracja I Integracja Bazy
Migracja I Integracja BazyPrzemysław ...
 
20160316 techstolica - cloudstorage -tidk
20160316  techstolica - cloudstorage -tidk20160316  techstolica - cloudstorage -tidk
20160316 techstolica - cloudstorage -tidk
Łukasz Grala
 
Wysoka Dostępność Windows Server 2008 w kontekscie umów SLA
Wysoka Dostępność Windows Server 2008 w kontekscie umów SLAWysoka Dostępność Windows Server 2008 w kontekscie umów SLA
Wysoka Dostępność Windows Server 2008 w kontekscie umów SLA
Tobias Koprowski
 
Wprowadzenie do modelowania danych w PowerPivot
Wprowadzenie do modelowania danych w PowerPivotWprowadzenie do modelowania danych w PowerPivot
Wprowadzenie do modelowania danych w PowerPivot
Kamil Nowinski
 
"Administrator z przypadku" - Jak działa SQL Server i jak o niego dbać
"Administrator z przypadku" - Jak działa SQL Server i jak o niego dbać"Administrator z przypadku" - Jak działa SQL Server i jak o niego dbać
"Administrator z przypadku" - Jak działa SQL Server i jak o niego dbać
Bartosz Ratajczyk
 
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
 
HYC - Angular stań się kanciastym
HYC - Angular stań się kanciastymHYC - Angular stań się kanciastym
HYC - Angular stań się kanciastym
Dariusz Jagieło
 
Testowanie na 101 sposobów
Testowanie na 101 sposobówTestowanie na 101 sposobów
Testowanie na 101 sposobów
Katarzyna Javaheri-Szpak
 
20160316 techstolica - cloudanalytics -tidk
20160316  techstolica - cloudanalytics -tidk20160316  techstolica - cloudanalytics -tidk
20160316 techstolica - cloudanalytics -tidk
Łukasz Grala
 
Integracja systemow od strony praktycznej
Integracja systemow od strony praktycznejIntegracja systemow od strony praktycznej
Integracja systemow od strony praktycznej
Marek Horbań
 
Reprezentacja hierarchii w SQL Server 2008/2008R2 - 2nd Silesian CodeCamp
Reprezentacja hierarchii w SQL Server 2008/2008R2 - 2nd Silesian CodeCampReprezentacja hierarchii w SQL Server 2008/2008R2 - 2nd Silesian CodeCamp
Reprezentacja hierarchii w SQL Server 2008/2008R2 - 2nd Silesian CodeCamp
Łukasz Grala
 
Transact-SQL. Czarna księga
Transact-SQL. Czarna księgaTransact-SQL. Czarna księga
Transact-SQL. Czarna księga
Wydawnictwo Helion
 
Roman Czarko-Wasiutycz- Projektowanie baz danych
Roman Czarko-Wasiutycz- Projektowanie baz danychRoman Czarko-Wasiutycz- Projektowanie baz danych
Roman Czarko-Wasiutycz- Projektowanie baz danych
Women in Technology Poland
 
20160309 AzureDay 2016 - Azure Stream Analytics & Azure Machine Learning
20160309   AzureDay 2016 - Azure Stream Analytics & Azure Machine Learning20160309   AzureDay 2016 - Azure Stream Analytics & Azure Machine Learning
20160309 AzureDay 2016 - Azure Stream Analytics & Azure Machine Learning
Łukasz Grala
 

Similar to Sql day2015 fts (20)

Wyszukiwanie pełnotekstowe w SQL Server
Wyszukiwanie pełnotekstowe w SQL ServerWyszukiwanie pełnotekstowe w SQL Server
Wyszukiwanie pełnotekstowe w SQL Server
 
20060416 Azure Boot Camp 2016- Azure Data Lake Storage and Analytics
20060416   Azure Boot Camp 2016- Azure Data Lake Storage and Analytics20060416   Azure Boot Camp 2016- Azure Data Lake Storage and Analytics
20060416 Azure Boot Camp 2016- Azure Data Lake Storage and Analytics
 
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 -...
 
Podstawy ETL z SSIS
Podstawy ETL z SSISPodstawy ETL z SSIS
Podstawy ETL z SSIS
 
Microsoft Business Intelligence w 2017 roku
Microsoft Business Intelligence w 2017 rokuMicrosoft Business Intelligence w 2017 roku
Microsoft Business Intelligence w 2017 roku
 
Migracja I Integracja Bazy
Migracja I Integracja BazyMigracja I Integracja Bazy
Migracja I Integracja Bazy
 
20160316 techstolica - cloudstorage -tidk
20160316  techstolica - cloudstorage -tidk20160316  techstolica - cloudstorage -tidk
20160316 techstolica - cloudstorage -tidk
 
Wysoka Dostępność Windows Server 2008 w kontekscie umów SLA
Wysoka Dostępność Windows Server 2008 w kontekscie umów SLAWysoka Dostępność Windows Server 2008 w kontekscie umów SLA
Wysoka Dostępność Windows Server 2008 w kontekscie umów SLA
 
Change Tracking
Change TrackingChange Tracking
Change Tracking
 
Wprowadzenie do modelowania danych w PowerPivot
Wprowadzenie do modelowania danych w PowerPivotWprowadzenie do modelowania danych w PowerPivot
Wprowadzenie do modelowania danych w PowerPivot
 
"Administrator z przypadku" - Jak działa SQL Server i jak o niego dbać
"Administrator z przypadku" - Jak działa SQL Server i jak o niego dbać"Administrator z przypadku" - Jak działa SQL Server i jak o niego dbać
"Administrator z przypadku" - Jak działa SQL Server i jak o niego dbać
 
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?
 
HYC - Angular stań się kanciastym
HYC - Angular stań się kanciastymHYC - Angular stań się kanciastym
HYC - Angular stań się kanciastym
 
Testowanie na 101 sposobów
Testowanie na 101 sposobówTestowanie na 101 sposobów
Testowanie na 101 sposobów
 
20160316 techstolica - cloudanalytics -tidk
20160316  techstolica - cloudanalytics -tidk20160316  techstolica - cloudanalytics -tidk
20160316 techstolica - cloudanalytics -tidk
 
Integracja systemow od strony praktycznej
Integracja systemow od strony praktycznejIntegracja systemow od strony praktycznej
Integracja systemow od strony praktycznej
 
Reprezentacja hierarchii w SQL Server 2008/2008R2 - 2nd Silesian CodeCamp
Reprezentacja hierarchii w SQL Server 2008/2008R2 - 2nd Silesian CodeCampReprezentacja hierarchii w SQL Server 2008/2008R2 - 2nd Silesian CodeCamp
Reprezentacja hierarchii w SQL Server 2008/2008R2 - 2nd Silesian CodeCamp
 
Transact-SQL. Czarna księga
Transact-SQL. Czarna księgaTransact-SQL. Czarna księga
Transact-SQL. Czarna księga
 
Roman Czarko-Wasiutycz- Projektowanie baz danych
Roman Czarko-Wasiutycz- Projektowanie baz danychRoman Czarko-Wasiutycz- Projektowanie baz danych
Roman Czarko-Wasiutycz- Projektowanie baz danych
 
20160309 AzureDay 2016 - Azure Stream Analytics & Azure Machine Learning
20160309   AzureDay 2016 - Azure Stream Analytics & Azure Machine Learning20160309   AzureDay 2016 - Azure Stream Analytics & Azure Machine Learning
20160309 AzureDay 2016 - Azure Stream Analytics & Azure Machine Learning
 

Sql day2015 fts

  • 2. Wyszukiwanie pełnotekstowe (Full-Text Search) w SQL Server Kamil Nowiński PLSSUG Wrocław kamil.nowinski@plssug.org.pl Tomasz Libera PLSSUG Kraków tomasz.libera@plssug.org.pl
  • 3. SQLDay 2015 Kamil Nowiński Tomasz Libera • DB Developer w WSZiB w Krakowie • Lider PLSSUG Kraków • Certyfikaty: • MCT • MCSE Data Platform • MCITP-DBA, MCITP-DD • Zainteresowania: • Pasjonat kolarstwa górskiego i maratonów MTB • Senior SQL/BI Developer w AlternativeNetworks (UK) • Programista > 20 lat (VB6, VB.NET, C#, .NET Framework) • Ponad 10-letnie doświadczenie jako DEV/DBA • Członek komisji rewizyjnej PLSSUG, • Co-Leader PLSSUG Wrocław • Certyfikaty SQL Server: MCITP, MCP, MCTS, MCSA, MCSE Data Platform • Zainteresowania: • Bieganie – obecnie trening do półmaratonu, • Fotografia cyfrowa (Nikon D-90, Adobe Lightroom)
  • 4. SQLDay 2015 Agenda Wprowadzenie LIKE to za mało Możliwości, Historia Architektura, Komponenty FTS Zapytania - CONTAINS & FREETEXT Indeksy FTS – budowa, tworzenie Wyrazy szumy, słownik synonimów, wyszukiwanie semantyczne Wyszukiwarka SQLoogle!
  • 6. SQLDay 2015 Możliwości • Wyszukiwanie danych tesktowych zapisanych w – kolumnach tekstowych (varchar, nvarchar) – danych binarnych w obsługiwanych formatach (txt, doc, docx, pdf...) • Dostępne już w bezpłatnej edycji SQL Server Express • Wyrażenia proste – jedno bądź wiele słów • Poszukiwanie różnych form gramatycznych • Wyrazy bliskoznaczne, synonimy słów • Sąsiedztwo wyrażeń (słów lub fraz) • Ważenie wyrażeń • Pozycjonowanie (rangowanie) wyników • Wyszukiwanie semantyczne
  • 7. SQLDay 2015 Historia SQL 7 SQL 2005 SQL 2008 SQL 2012 SQL 2014 • Pierwsza odsłona FTS • Oparty o Microsoft Indexing Service • Indeksy, noise words poza bazą danych (osobne kopie zapasowe) • iFTS • Nowe typy danych – varchar(max), varbinary(max) – lepsza wydajność • Nowe widoki systemowe • Obsługa XML • Zintegrowane kopie zapasowe indeksów • DDL Statements (CREATE FULLTEXT CATALOG, CREATE FULLTEXT INDEX… • Thesaurus • Natywna obsługa języka polskiego • Możliwość określania odległości między szukanymi wyrazami (NEAR) • Kwiecień 2015: Azure SQL Database (preview)
  • 8. SQLDay 2015 Pro Full-Text Search in SQL Server 2008, Michael Coles, Apress Architektura
  • 9. SQLDay 2015 Zapytania FTS • Operatory porównania wykorzystywane w części WHERE zapytania – CONTAINS – FREETEXT • Funkcje tabelaryczne (w części FROM), umożliwiają rangowanie – CONTAINSTABLE – FREETEXTABLE
  • 11. SQLDay 2015 Predykaty CONTAINS & FREETEXT CONTAINS FREETEXT Formy fleksyjne wyrazów Na żądanie FORMSOF(INFLECTIONAL, wyraz) Zawsze Thesaurus (w tym synonimy) Na żądanie FORMSOF(THESAURUS, wyraz) Zawsze Wagi dla wyrazów TAK NIE Operatory logiczne TAK NIE Wyrazy blisko siebie TAK NIE Przedrostki wyrazów (prefix) TAK NIE Zapytanie Złożone, większa kontrola Dużo prostsze, mniejsza kontrola Razem rezultaty Mniejsza liczba wyników Dokładniejsze Większa liczba wyników Mniej precyzyjne
  • 12. SQLDay 2015 Wykonywanie zapytania pełnotekstowego Silnik Full-Text Search: 1) Wykonuje dzielenie wyrazów (word breaker) frazy 2) Generuje formy fleksyjne (steamer) 3) Identyfikuje listę rozszerzeń i zastąpień (thesaurus) 4) Znajduje wszystkie powyższe wyrazy
  • 13. SQLDay 2015 Budowa indeksu display_term DocID occurrence special_term dom 1 1 Exact Match to 1 2 Noise Word nie 1 3 Noise Word tylko 1 4 Exact Match budynek 1 5 Exact Match dom 1 14 Exact Match to 1 15 Noise Word mama 1 16 Exact Match tata 1 17 Exact Match i 1 18 Noise Word ja 1 19 Noise Word to 2 1 Noise Word moja 2 2 Noise Word babcia 2 3 Exact Match i 2 4 Noise Word maly 2 5 Exact Match brat 2 6 Exact Match http://pliki.naszelementarz.men.gov.pl/elementarz/naszelementarz.pdf
  • 14. SQLDay 2015 Aktualizacja (przebudowa indeksu) Asynchroniczna: • Pełna ALTER FULLTEXT INDEX ON NewsPL START FULL POPULATION • Przyrostowa – tylko wiersze zmodyfikowane od ostatniego wypełniania (wymaga kolumny RowVersion w tabeli) ALTER FULLTEXT INDEX ON NewsPL START INCREMENTAL POPULATION • Tylko wiersze zmodyfikowane od ostatniego wypełniania, wymaga CHANGE_TRACKING (nie wymaga RowVersion) ALTER FULLTEXT INDEX ON NewsPL START UPDATE POPULATION
  • 15. SQLDay 2015 Obsługa plików docx • MS Office 2010 Filter Packs • sp_fulltext_service 'load_os_resources', 1 • Restart instancji
  • 16. SQLDay 2015 Obsługa plików PDF http://www.adobe.com/support/downloads/detail.jsp?ftpID=5542 http://www.pdflib.com/download/tet-pdf-ifilter/ http://www.foxitsoftware.com/products/ifilter/
  • 18. SQLDay 2015 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ć:
  • 19. SQLDay 2015 Synonimy i plik tezaurus (thesaurus) • Przechowywane na dysku MSSQLFTDATA tsXXX.xml - (XXX - ENU,PLN) • tsglobal - globalny tezaurus- wykorzystywany dodatkowo, bez względu na jaki język – jeśli poszukiwany wyraz znajduje się w globalnym i lokalnym (specyficznym dla języka) - pierwszeństwo ma lokalny • Edycja pliku pozwala na konfigurację: – Diacritics_sensitive – Expansion (autor, pisarz) wyszukiwane są również słowa bliskoznaczne – Replacement (Win 2k8 -> Windows 2008) wyszukiwane słowo jest zastępowane słowem bliskoznacznym • Po edycji pliku musi zostać on załadowany przez SQL Server:
  • 20. SQLDay 2015 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
  • 22. SQLDay 2015 DEMO #5 wyszukiwarka SQLoogle http://youtu.be/LY-X1LaPFp4
  • 24. DZIĘKUJEMY ZA UWAGĘ! Kamil Nowiński PLSSUG Wrocław kamil.nowinski@plssug.org.pl @NowinskiK Tomasz Libera PLSSUG Kraków tomasz.libera@plssug.org.pl @tomasz_libera