SlideShare une entreprise Scribd logo
1  sur  25
Télécharger pour lire hors ligne
MySQL Fulltext Search




                                       ComCon
                            Frankfurt/Main, 2004

          © MySQL AB 2004
2
                                                     ComCon: Fulltext Search | | Frankfurt 2004



                          MySQL Fulltext Search: Session
                                      Outline
        ●     Fulltext search in MySQL
                ✔    overview
                ✔    modes of operation
                ✔    syntax
        ●     Boolean Fulltext Search
                ✔    purpose
                ✔    operators
                ✔    relevance ranking
        ●     Natural Language Search
                ✔    purpose
                ✔    relevance ranking
                ✔    query expansion
        ●     Internal Structure of Fulltext Index
        ●     TODO: directions of development

Copyright 2004 MySQL AB
3
                                                ComCon: Fulltext Search | | Frankfurt 2004




                                 Who am I ?
      ●     My name is Sergei Golubchik
      ●     Originally from Ukraine, now living in Kerpen
      ●     Primary developer of MySQL Fulltext Search
      ●     Full-time MySQL AB employee since March 2000
      ●     Doing other things, besides fulltext search:
              ✔    indexes in MERGE tables
              ✔    bulk inserts
              ✔    parallel repair
              ✔    HANDLER
              ✔    ALTER TABLE ... ENABLE/DISABLE KEYS
              ✔    INSERT ... ON DUPLICATE KEY UPDATE
              ✔    security@mysql.com
              ✔    bug policeman


Copyright 2004 MySQL AB
4
                                                              ComCon: Fulltext Search | | Frankfurt 2004




                          Fulltext search QuickPoll
    How many of you...
     ●     have used MySQL Fulltext Search in production ?
             ✔    have at least tried using MySQL Fulltext search ?
             ✔    have used fulltext search in other products ?
     ●     are interested in boolean fulltext search ?
             ✔    natural language search ?
             ✔    in our future plans for fulltext search ?
     ●     are interested in how to tune and optimize your fulltext
           search application ?
     ●     are interested in how MySQL Fulltext Search works internally
           ?
             ✔    have contributed code to Open Source products ?



Copyright 2004 MySQL AB
5
                                                      ComCon: Fulltext Search | | Frankfurt 2004




                    History of MySQL Fulltext search
      ●     1995–1998
             ✔ I was using various fulltext engines. No one could do complex
               queries on structured data
             ✔ Relational DBMSes could do it perfectly, and SQL was very
               capable – but they had no fulltext search capabilities
             ✔ MySQL RDBMS was Open Source and it was known to be
               very fast. It was MySQL 3.22.7
      ●     Oct. 1998: First version of fulltext search engine for ISAM
      ●     May 1999: It was rewritten for MyISAM
      ●     Oct. 1999: First public release
      ●     Jun. 2000: MATCH ... AGAINST syntax
      ●     Dec. 2001: Boolean fulltext search went public
      ●     Jan. 2003: Major rewrite of the index structure code
      ●     Sep. 2003: Unicode support, query expansion
Copyright 2004 MySQL AB
6
                                                           ComCon: Fulltext Search | | Frankfurt 2004




                                 Problem to solve
      ●     Having a collection of documents, quickly find documents,
            that
              ✔    contain certain words, or
              ✔    are about some topic
      ●     Applications are:
              ✔    digital libraries
              ✔    text (e.g. mail, news) archives
              ✔    you name it
      ●     Requirements:
              ✔    fully dynamic index (no need for periodical reindexing)
              ✔    native SQL-like interface
              ✔    fast inserts/updates and searches
              ✔    reasonable effectiveness for natural language queries
              ✔    configurable, but easy to use
              ✔    moderate index size

Copyright 2004 MySQL AB
7
                                                           ComCon: Fulltext Search | | Frankfurt 2004




                               Modes of Operation
     MySQL Fulltext Search engine supports two different
     search modes:
      ●     Natural Language Search:
              ✔    MATCH (col1, col2, ...) AGAINST (quot;query phrasequot;
                   [ WITH QUERY EXPANSION ] )
              ✔    is supposed to find documents (rows) that are about the topic
                   described in the query phrase
              ✔    the query is a phrase in natural human language (e.g. English)
      ●     Boolean Search
              ✔    MATCH (col1, col2, ...) AGAINST (quot;query expressionquot;
                   IN BOOLEAN MODE )
              ✔    finds only rows that satisfy query expression exactly
              ✔    the query is written on special query language



Copyright 2004 MySQL AB
8
                                       ComCon: Fulltext Search | | Frankfurt 2004




                           Example 1

mysql> CREATE TABLE articles (
    ->    id INT UNSIGNED NOT NULL PRIMARY KEY,
    ->    title VARCHAR(200),
    ->    body TEXT,
    ->    FULLTEXT (title,body)
    -> );
Query OK, 0 rows affected (0.00 sec)

mysql> LOAD DATA INFILE 'test.txt' INTO TABLE articles;
Query OK, 6 rows affected (0.00 sec)
Records: 6 Duplicates: 0 Warnings: 0




 Copyright 2004 MySQL AB
9
                                         ComCon: Fulltext Search | | Frankfurt 2004




                          Example 2

mysql> SELECT * FROM articles
    ->       WHERE MATCH (title,body) AGAINST ('database');
+----+-------------------+-----------------------------------+
| id | title             | body                              |
+----+-------------------+-----------------------------------+
| 5 | MySQL vs. YourSQL | In the following database compa...|
| 1 | MySQL Tutorial     | DBMS stands for DataBase. In th...|
+----+-------------------+-----------------------------------+
2 rows in set (0.00 sec)




Copyright 2004 MySQL AB
10
                                         ComCon: Fulltext Search | | Frankfurt 2004




                          Example 3
mysql> SELECT id, body, MATCH (title,body) AGAINST
    -> ('Security implications of running MySQL as root')
    -> AS score
    -> FROM articles WHERE MATCH (title,body) AGAINST
    -> ('Security implications of running MySQL as root');
+----+-------------------------------------+-----------------+
| id | body                                | score           |
+----+-------------------------------------+-----------------+
| 4 | 1. Never run mysqld as root. 2. ... | 1.5055546709332 |
| 6 | When configured properly, MySQL ... |    1.31140957288 |
+----+-------------------------------------+-----------------+
2 rows in set (0.00 sec)




Copyright 2004 MySQL AB
11
                                         ComCon: Fulltext Search | | Frankfurt 2004




                          Example 4
mysql> SELECT * FROM articles WHERE MATCH (title,body)
    -> AGAINST ('MySQL');
0 rows in set (0.00 sec)

mysql> SELECT * FROM articles WHERE MATCH (title,body)
    ->     AGAINST ('+MySQL -YourSQL' IN BOOLEAN MODE);
+----+-------------------------+------------------------------+
| id | title                   | body                         |
+----+-------------------------+------------------------------+
| 1 | MySQL Tutorial           | DBMS stands for DataBase M...|
| 2 | How To Use MySQL Effi...| After you went through a l...|
| 3 | Optimising MySQL         | In this tutorial we will s...|
| 4 | 1001 MySQL Tricks        | 1. Never run mysqld as root. |
| 6 | MySQL Security           | When configured properly M...|
+----+-------------------------+------------------------------+
5 rows in set (0.00 sec)

Copyright 2004 MySQL AB
12
                                                   ComCon: Fulltext Search | | Frankfurt 2004




                          Boolean Fulltext Search
      ●     Search is performed for words
      ●     Query specifies what words must be present in every found
            row and what words must not
      ●     Complex expressions can be created with boolean
            operators and parentheses
      ●     No matter how complex search expression is, each row
            either satisfies it – and does it absolutely, result of
            comparison is TRUE – or does not satisfy it – and again,
            completely, value is FALSE
      ●     For each row it is easy to say whether it matches given
            search expression or not
      ●     Formulating a proper query can be very difficult

Copyright 2004 MySQL AB
13
                                             ComCon: Fulltext Search | | Frankfurt 2004




             Operators in Boolean Fulltext Search
    ●      apple banana
    ●      +apple +juice
    ●      +apple -macintosh
    ●      +apple +(pie strudel)
    ●      apple*
    ●      quot;Big Applequot;
    ●      +apple baked
    ●      +apple ~baked
    ●      +apple +(>pie <strudel)
             ✔    apple banana  ↔ apple OR banana
             ✔    +apple +juice ↔ apple AND juice
             ✔    +apple baked ↔ ???

Copyright 2004 MySQL AB
14
                                                          ComCon: Fulltext Search | | Frankfurt 2004




                               Relevance Ranking
      ●     There is no concept of relevance in boolean search
      ●     “Extended boolean” search models provide relevance but
            break strict matching, they return partially matched rows
      ●     In MySQL, boolean search is strictly boolean, yet some
            “relevance” value is available
      ●     The logic is (in and/or syntax for simplicity):
              ✔    A or B                       weight(A)=weight(B)=1
              ✔    A and B and C                w(A)=w(B)=w(C)=⅓
              ✔    A or (B and (C or D))        w(A)=1, w(B)=w(C)=w(D)=½
              ✔    “relevance” of the row is the sum of weights of matched
                   words, it cannot be less than 1



Copyright 2004 MySQL AB
15
                                                           ComCon: Fulltext Search | | Frankfurt 2004




                          Natural Language Search
      ●     Looks for documents that are relevant to the free-text
            natural human language query
              ✔    e.g. “join algorithms in relational DBMS-es”
      ●     There is no “absolute matching” here – document can be
            only partially relevant (and partially irrelevant)
      ●     There is no way to define this “relevance” – different people
            will have different opinions on how relevant is one text to
            another
              ✔    search engines are trained on sample document/query sets
                   where relevance judgments were provided by human experts
      ●     One should never assume that MATCH ... AGAINST()
            will return rows that contain query words
              ✔    e.g. “Optimizing nested-loop joins in MySQL” is very relevant
                   to the above query, but has no common words with it
Copyright 2004 MySQL AB
16
                                                                       ComCon: Fulltext Search | | Frankfurt 2004




                                       Relevance Ranking
      ●     Vector Space Model:
              ✔    n-dimensional space, where n – is number of unique words in
                   the collection
              ✔    every document and every query is a vector in this space, with
                   ith-coordinate to be weight of the word i in this document
              ✔    similarity between document and query is computed as a
                   scalar product of their vectors, usually with a normalization
                   factor
      ●     There are many different theories proposing estimation of
            the word weight in a document
              ✔    generally, it can be decomposed as: wi = wi,local · wi,global
              ✔    In MySQL

                w i, local =wlog=
                                   ln tf i1
                                  〈lntf i1 〉                        N
                                                w i, global =w prob=ln −1
                                                                      df i
                                                                                     norm =
                                                                                                     1
                                                                                                10.0115 n uniq

Copyright 2004 MySQL AB
17
                                                         ComCon: Fulltext Search | | Frankfurt 2004




                                Query Expansion
      ●     Also known as “automatic relevance feedback”
      ●     Simple and proven technique for improving recall for short
            natural-language queries
      ●     Natural language searches are known to work the best on
            relatively long queries
      ●     Short queries carry too little semantic data to describe an
            implied (by the author) topic of search
      ●     Query expansion works according to the following
              ✔    perform the search
              ✔    get the few most relevant document and add them to the
                   original query
              ✔    repeat the search using the new expanded query
      ●     Available in MySQL 4.1.1

Copyright 2004 MySQL AB
18
                                         ComCon: Fulltext Search | | Frankfurt 2004




                          Example 1

mysql> SELECT * FROM books WHERE MATCH (title,body)
   --> AGAINST ('database' WITH QUERY EXPANSION);
+----+--------------------+-----------------------------------+
| id | title              | body                              |
+----+--------------------+-----------------------------------+
| 5 | RDBMS Tutorial      | Relational Database Management ...|
| 9 | Relational algebra | The basic operations in the rel...|
| 1 | Storage Engines     | MySQL supports different storag...|
| 19 | Oracle tuning      | There are different techniques ...|
+----+--------------------+-----------------------------------+
4 rows in set (0.00 sec)




Copyright 2004 MySQL AB
19
                                         ComCon: Fulltext Search | | Frankfurt 2004




                          Example 2

mysql> SELECT * FROM books WHERE MATCH title AGAINST ('Megre
   --> and the reluctant witnesses' WITH QUERY EXPANSION);
+-----+-------------------------------------+-----------------+
| id | title                                | author          |
+-----+-------------------------------------+-----------------+
| 843 | Maigret and the Reluctant Witnesses | Georges Simenon |
| 409 | Maigret in Court                    | Georges Simenon |
| 913 | Maigret Returns                     | Georges Simenon |
| 981 | The Methods of Maigret              | Georges Simenon |
| 765 | Maigret and the Lazy Burglar        | Georges Simenon |
| 252 | Maigret and the Black Sheep         | Georges Simenon |
+-----+-------------------------------------+-----------------+
6 rows in set (0.00 sec)



Copyright 2004 MySQL AB
20
                                                          ComCon: Fulltext Search | | Frankfurt 2004




                          Search modes side-by-side
      ●     Boolean mode                      ●   Natural language mode
              ✔    searches for words             ✔   searches for concepts
              ✔    uses query language            ✔   free text queries
              ✔    suitable for experienced       ✔   does not require computer
                   users                              literacy
              ✔    provides only simplistic       ✔   computes complicated
                   (and rather arbitrary)             theoretically grounded
                   relevance ranking                  relevance ranking
              ✔    can work without               ✔   requires FULLTEXT index
                   FULLTEXT index                     for collection-wide statistics
              ✔    search is performed            ✔   all the documents are
                   incrementally                      found at once
              ✔    is faster                      ✔   is O(log N) slower




Copyright 2004 MySQL AB
21
                                                ComCon: Fulltext Search | | Frankfurt 2004




                          Fulltext Index Internals
      ●     Key entry structure:
              ✔    { word(varchar), weight(float), rowid }
      ●     MyISAM index – B-tree:



     ●     Two level B-tree (MySQL 4.1):
             ✔    { word(varchar), count(long) }
             ✔    { weight(float), rowid }




Copyright 2004 MySQL AB
22
                                                            ComCon: Fulltext Search | | Frankfurt 2004




                                    Fulltext TODO
      ●     Boolean Search:
              ✔    benefit from the new index structure
              ✔    proximity operators
      ●     Natural Language Search:
              ✔    benefit from the new index structure
              ✔    new, more adequate weighting scheme
              ✔    language-dependent stem and stopwords
      ●     General features:
              ✔    per-index settings
              ✔    support for binary charsets (UCS-2)
              ✔    support for MERGE tables
              ✔    “always index” word list (for “C++”, “TCP/IP”, etc)




Copyright 2004 MySQL AB
23
                                                 ComCon: Fulltext Search | | Frankfurt 2004




                                That's all !
      ●     If you have any questions, you can ask them now
      ●     Or you can ask me after the presentation
      ●     Thanks for listening




                                   ☺
Copyright 2004 MySQL AB
24
                                                ComCon: Fulltext Search | | Frankfurt 2004




                          Tuning & Optimization
      ●     Key_buffer_size
      ●     ft_stopword_file
      ●     ft_min_word_len
      ●     ft_max_word_len
      ●     ft_query_expansion_limit
      ●     myisam_sort_buffer_size
      ●     myisam_max_sort_file_size
      ●     searching for ”search*ing”:
              ✔    MATCH col AGAINST ('search*' IN BOOLEAN MODE)
                   AND col REGEXP
                   '[[:<:]]search[[:alnum:]]+ing[[:>:]]'


Copyright 2004 MySQL AB
25
                                                               ComCon: Fulltext Search | | Frankfurt 2004




                                 Benefits of new structure
      ●     Natural Language Search:
              ✔    unsafe optimization: skip words with wi,global < ε
              ✔    reduced noise
              ✔    lesser number of rows returned
                             reduced I/O
                             reduced O(log N) speed penalty
      ●     Boolean Search:
              ✔    in “+apple +avocado” queries, instead of intersecting long list
                   of rows, containing word “apple” and the short list of rows with
                   “avocado”, MySQL can look up rows from the short “avocado”
                   list in the “apple” sub-B-tree, thus avoiding index scan




Copyright 2004 MySQL AB

Contenu connexe

Tendances

You know, for search. Querying 24 Billion Documents in 900ms
You know, for search. Querying 24 Billion Documents in 900msYou know, for search. Querying 24 Billion Documents in 900ms
You know, for search. Querying 24 Billion Documents in 900msJodok Batlogg
 
Large Scale Crawling with Apache Nutch and Friends
Large Scale Crawling with Apache Nutch and FriendsLarge Scale Crawling with Apache Nutch and Friends
Large Scale Crawling with Apache Nutch and Friendslucenerevolution
 
Cloudera - Using morphlines for on the-fly ETL by Wolfgang Hoschek
Cloudera - Using morphlines for on the-fly ETL by Wolfgang HoschekCloudera - Using morphlines for on the-fly ETL by Wolfgang Hoschek
Cloudera - Using morphlines for on the-fly ETL by Wolfgang HoschekHakka Labs
 
JCR - Java Content Repositories
JCR - Java Content RepositoriesJCR - Java Content Repositories
JCR - Java Content RepositoriesCarsten Ziegeler
 
Nutch as a Web data mining platform
Nutch as a Web data mining platformNutch as a Web data mining platform
Nutch as a Web data mining platformabial
 
Managing Your Content with Elasticsearch
Managing Your Content with ElasticsearchManaging Your Content with Elasticsearch
Managing Your Content with ElasticsearchSamantha Quiñones
 
MySQL HA Percona cluster @ MySQL meetup Mumbai
MySQL HA Percona cluster @ MySQL meetup MumbaiMySQL HA Percona cluster @ MySQL meetup Mumbai
MySQL HA Percona cluster @ MySQL meetup MumbaiRemote MySQL DBA
 
Friends of Solr - Nutch & HDFS
Friends of Solr - Nutch & HDFSFriends of Solr - Nutch & HDFS
Friends of Solr - Nutch & HDFSSaumitra Srivastav
 
SQL Performance Improvements At a Glance in Apache Spark 3.0
SQL Performance Improvements At a Glance in Apache Spark 3.0SQL Performance Improvements At a Glance in Apache Spark 3.0
SQL Performance Improvements At a Glance in Apache Spark 3.0Kazuaki Ishizaki
 
SQL Server 2014 In-Memory OLTP
SQL Server 2014 In-Memory OLTPSQL Server 2014 In-Memory OLTP
SQL Server 2014 In-Memory OLTPTony Rogerson
 
Apache Sqoop: Unlocking Hadoop for Your Relational Database
Apache Sqoop: Unlocking Hadoop for Your Relational Database Apache Sqoop: Unlocking Hadoop for Your Relational Database
Apache Sqoop: Unlocking Hadoop for Your Relational Database huguk
 
Percona tool kit for MySQL DBA's
Percona tool kit for MySQL DBA'sPercona tool kit for MySQL DBA's
Percona tool kit for MySQL DBA'sKarthik .P.R
 
Apache zeppelin the missing component for the big data ecosystem
Apache zeppelin the missing component for the big data ecosystemApache zeppelin the missing component for the big data ecosystem
Apache zeppelin the missing component for the big data ecosystemDuyhai Doan
 
Content Storage With Apache Jackrabbit
Content Storage With Apache JackrabbitContent Storage With Apache Jackrabbit
Content Storage With Apache JackrabbitJukka Zitting
 
MongoFr : MongoDB as a log Collector
MongoFr : MongoDB as a log CollectorMongoFr : MongoDB as a log Collector
MongoFr : MongoDB as a log CollectorPierre Baillet
 
Oak, the architecture of Apache Jackrabbit 3
Oak, the architecture of Apache Jackrabbit 3Oak, the architecture of Apache Jackrabbit 3
Oak, the architecture of Apache Jackrabbit 3Jukka Zitting
 
/path/to/content - the Apache Jackrabbit content repository
/path/to/content - the Apache Jackrabbit content repository/path/to/content - the Apache Jackrabbit content repository
/path/to/content - the Apache Jackrabbit content repositoryJukka Zitting
 
Lessons learned while building Omroep.nl
Lessons learned while building Omroep.nlLessons learned while building Omroep.nl
Lessons learned while building Omroep.nlbartzon
 

Tendances (20)

You know, for search. Querying 24 Billion Documents in 900ms
You know, for search. Querying 24 Billion Documents in 900msYou know, for search. Querying 24 Billion Documents in 900ms
You know, for search. Querying 24 Billion Documents in 900ms
 
SphinxSE with MySQL
SphinxSE with MySQLSphinxSE with MySQL
SphinxSE with MySQL
 
Large Scale Crawling with Apache Nutch and Friends
Large Scale Crawling with Apache Nutch and FriendsLarge Scale Crawling with Apache Nutch and Friends
Large Scale Crawling with Apache Nutch and Friends
 
Cloudera - Using morphlines for on the-fly ETL by Wolfgang Hoschek
Cloudera - Using morphlines for on the-fly ETL by Wolfgang HoschekCloudera - Using morphlines for on the-fly ETL by Wolfgang Hoschek
Cloudera - Using morphlines for on the-fly ETL by Wolfgang Hoschek
 
JCR - Java Content Repositories
JCR - Java Content RepositoriesJCR - Java Content Repositories
JCR - Java Content Repositories
 
Nutch as a Web data mining platform
Nutch as a Web data mining platformNutch as a Web data mining platform
Nutch as a Web data mining platform
 
Managing Your Content with Elasticsearch
Managing Your Content with ElasticsearchManaging Your Content with Elasticsearch
Managing Your Content with Elasticsearch
 
MySQL HA Percona cluster @ MySQL meetup Mumbai
MySQL HA Percona cluster @ MySQL meetup MumbaiMySQL HA Percona cluster @ MySQL meetup Mumbai
MySQL HA Percona cluster @ MySQL meetup Mumbai
 
Friends of Solr - Nutch & HDFS
Friends of Solr - Nutch & HDFSFriends of Solr - Nutch & HDFS
Friends of Solr - Nutch & HDFS
 
SQL Performance Improvements At a Glance in Apache Spark 3.0
SQL Performance Improvements At a Glance in Apache Spark 3.0SQL Performance Improvements At a Glance in Apache Spark 3.0
SQL Performance Improvements At a Glance in Apache Spark 3.0
 
Advanced Sqoop
Advanced Sqoop Advanced Sqoop
Advanced Sqoop
 
SQL Server 2014 In-Memory OLTP
SQL Server 2014 In-Memory OLTPSQL Server 2014 In-Memory OLTP
SQL Server 2014 In-Memory OLTP
 
Apache Sqoop: Unlocking Hadoop for Your Relational Database
Apache Sqoop: Unlocking Hadoop for Your Relational Database Apache Sqoop: Unlocking Hadoop for Your Relational Database
Apache Sqoop: Unlocking Hadoop for Your Relational Database
 
Percona tool kit for MySQL DBA's
Percona tool kit for MySQL DBA'sPercona tool kit for MySQL DBA's
Percona tool kit for MySQL DBA's
 
Apache zeppelin the missing component for the big data ecosystem
Apache zeppelin the missing component for the big data ecosystemApache zeppelin the missing component for the big data ecosystem
Apache zeppelin the missing component for the big data ecosystem
 
Content Storage With Apache Jackrabbit
Content Storage With Apache JackrabbitContent Storage With Apache Jackrabbit
Content Storage With Apache Jackrabbit
 
MongoFr : MongoDB as a log Collector
MongoFr : MongoDB as a log CollectorMongoFr : MongoDB as a log Collector
MongoFr : MongoDB as a log Collector
 
Oak, the architecture of Apache Jackrabbit 3
Oak, the architecture of Apache Jackrabbit 3Oak, the architecture of Apache Jackrabbit 3
Oak, the architecture of Apache Jackrabbit 3
 
/path/to/content - the Apache Jackrabbit content repository
/path/to/content - the Apache Jackrabbit content repository/path/to/content - the Apache Jackrabbit content repository
/path/to/content - the Apache Jackrabbit content repository
 
Lessons learned while building Omroep.nl
Lessons learned while building Omroep.nlLessons learned while building Omroep.nl
Lessons learned while building Omroep.nl
 

En vedette

Panorama Business Intelligence Solution
Panorama Business Intelligence SolutionPanorama Business Intelligence Solution
Panorama Business Intelligence Solutionwww.panorama.com
 
Green Venue Zone
Green Venue ZoneGreen Venue Zone
Green Venue ZoneCarol Moxam
 
Eastern Screech Owl
Eastern Screech OwlEastern Screech Owl
Eastern Screech Owleyaslik
 
Ideas 5 - Roger Hudson - Understanding WCAG 2.0
Ideas 5 - Roger Hudson - Understanding WCAG 2.0Ideas 5 - Roger Hudson - Understanding WCAG 2.0
Ideas 5 - Roger Hudson - Understanding WCAG 2.0awia
 
1001 RAZONES PARA LEER
1001 RAZONES PARA LEER1001 RAZONES PARA LEER
1001 RAZONES PARA LEERTRASTOLILLOS
 
Carlsbad Median Prices Jan-June 2009
Carlsbad Median Prices Jan-June 2009Carlsbad Median Prices Jan-June 2009
Carlsbad Median Prices Jan-June 2009lps58
 
What's New in NovaView 6.2
What's New in NovaView 6.2What's New in NovaView 6.2
What's New in NovaView 6.2www.panorama.com
 
Защита данных и непрерывная доступность
Защита данных и непрерывная доступностьЗащита данных и непрерывная доступность
Защита данных и непрерывная доступностьAlexey Kononenko
 
Terri DeLaRosby presentation
Terri DeLaRosby presentationTerri DeLaRosby presentation
Terri DeLaRosby presentationterrikae
 
Webdistilled per la Media Analysis
Webdistilled per la Media AnalysisWebdistilled per la Media Analysis
Webdistilled per la Media AnalysisMaurizio Pontremoli
 
Gadu Gadu Widget
Gadu Gadu WidgetGadu Gadu Widget
Gadu Gadu WidgetGG Network
 
九方中文輸入法 特徵簡介
九方中文輸入法 特徵簡介九方中文輸入法 特徵簡介
九方中文輸入法 特徵簡介Warren Yip
 
Bootstrapping your startup & building it lean: stop wasting time
Bootstrapping your startup & building it lean: stop wasting timeBootstrapping your startup & building it lean: stop wasting time
Bootstrapping your startup & building it lean: stop wasting timeJoel Gascoigne
 
Semi-automated Assessment of Annotation Trustworthiness
Semi-automated Assessment of Annotation TrustworthinessSemi-automated Assessment of Annotation Trustworthiness
Semi-automated Assessment of Annotation TrustworthinessDavide Ceolin
 

En vedette (20)

Panorama Business Intelligence Solution
Panorama Business Intelligence SolutionPanorama Business Intelligence Solution
Panorama Business Intelligence Solution
 
Wereldwinkeliers
WereldwinkeliersWereldwinkeliers
Wereldwinkeliers
 
Openrules prez ipt2
Openrules prez ipt2Openrules prez ipt2
Openrules prez ipt2
 
Green Venue Zone
Green Venue ZoneGreen Venue Zone
Green Venue Zone
 
KC members stats
KC members statsKC members stats
KC members stats
 
Eastern Screech Owl
Eastern Screech OwlEastern Screech Owl
Eastern Screech Owl
 
Ideas 5 - Roger Hudson - Understanding WCAG 2.0
Ideas 5 - Roger Hudson - Understanding WCAG 2.0Ideas 5 - Roger Hudson - Understanding WCAG 2.0
Ideas 5 - Roger Hudson - Understanding WCAG 2.0
 
Symbionomics
SymbionomicsSymbionomics
Symbionomics
 
Kommunikationsplanering
KommunikationsplaneringKommunikationsplanering
Kommunikationsplanering
 
1001 RAZONES PARA LEER
1001 RAZONES PARA LEER1001 RAZONES PARA LEER
1001 RAZONES PARA LEER
 
Carlsbad Median Prices Jan-June 2009
Carlsbad Median Prices Jan-June 2009Carlsbad Median Prices Jan-June 2009
Carlsbad Median Prices Jan-June 2009
 
What's New in NovaView 6.2
What's New in NovaView 6.2What's New in NovaView 6.2
What's New in NovaView 6.2
 
Защита данных и непрерывная доступность
Защита данных и непрерывная доступностьЗащита данных и непрерывная доступность
Защита данных и непрерывная доступность
 
Terri DeLaRosby presentation
Terri DeLaRosby presentationTerri DeLaRosby presentation
Terri DeLaRosby presentation
 
Webdistilled per la Media Analysis
Webdistilled per la Media AnalysisWebdistilled per la Media Analysis
Webdistilled per la Media Analysis
 
Gadu Gadu Widget
Gadu Gadu WidgetGadu Gadu Widget
Gadu Gadu Widget
 
九方中文輸入法 特徵簡介
九方中文輸入法 特徵簡介九方中文輸入法 特徵簡介
九方中文輸入法 特徵簡介
 
Presentation1
Presentation1Presentation1
Presentation1
 
Bootstrapping your startup & building it lean: stop wasting time
Bootstrapping your startup & building it lean: stop wasting timeBootstrapping your startup & building it lean: stop wasting time
Bootstrapping your startup & building it lean: stop wasting time
 
Semi-automated Assessment of Annotation Trustworthiness
Semi-automated Assessment of Annotation TrustworthinessSemi-automated Assessment of Annotation Trustworthiness
Semi-automated Assessment of Annotation Trustworthiness
 

Similaire à Mysql Fulltext Search

My Sql And Search At Craigslist
My Sql And Search At CraigslistMy Sql And Search At Craigslist
My Sql And Search At CraigslistMySQLConference
 
MySQL Fulltext Search Tutorial
MySQL Fulltext Search TutorialMySQL Fulltext Search Tutorial
MySQL Fulltext Search TutorialZhaoyang Wang
 
Introduction to libre « fulltext » technology
Introduction to libre « fulltext » technologyIntroduction to libre « fulltext » technology
Introduction to libre « fulltext » technologyRobert Viseur
 
My sql crashcourse_intro_kdl
My sql crashcourse_intro_kdlMy sql crashcourse_intro_kdl
My sql crashcourse_intro_kdlsqlhjalp
 
Sphinx new
Sphinx newSphinx new
Sphinx newrit2010
 
06 integrate elasticsearch
06 integrate elasticsearch06 integrate elasticsearch
06 integrate elasticsearchErhwen Kuo
 
Plugin Opensql2008 Sphinx
Plugin Opensql2008 SphinxPlugin Opensql2008 Sphinx
Plugin Opensql2008 SphinxLiu Lizhi
 
Tagging and Folksonomy Schema Design for Scalability and Performance
Tagging and Folksonomy Schema Design for Scalability and PerformanceTagging and Folksonomy Schema Design for Scalability and Performance
Tagging and Folksonomy Schema Design for Scalability and PerformanceEduard Bondarenko
 
CertiFUNcation 2017 Best Practices Extension Development for TYPO3 8 LTS
CertiFUNcation 2017 Best Practices Extension Development for TYPO3 8 LTSCertiFUNcation 2017 Best Practices Extension Development for TYPO3 8 LTS
CertiFUNcation 2017 Best Practices Extension Development for TYPO3 8 LTScpsitgmbh
 
ElasticSearch AJUG 2013
ElasticSearch AJUG 2013ElasticSearch AJUG 2013
ElasticSearch AJUG 2013Roy Russo
 
Realtime Search Infrastructure at Craigslist (OpenWest 2014)
Realtime Search Infrastructure at Craigslist (OpenWest 2014)Realtime Search Infrastructure at Craigslist (OpenWest 2014)
Realtime Search Infrastructure at Craigslist (OpenWest 2014)Jeremy Zawodny
 
XML Amsterdam - Creating structure in unstructured data
XML Amsterdam - Creating structure in unstructured dataXML Amsterdam - Creating structure in unstructured data
XML Amsterdam - Creating structure in unstructured dataMarco Gralike
 
Infinispan,Lucene,Hibername OGM
Infinispan,Lucene,Hibername OGMInfinispan,Lucene,Hibername OGM
Infinispan,Lucene,Hibername OGMJBug Italy
 
Fact-Based Monitoring
Fact-Based MonitoringFact-Based Monitoring
Fact-Based MonitoringDatadog
 
Fact based monitoring
Fact based monitoringFact based monitoring
Fact based monitoringDatadog
 
Sql php-vibrant course-mumbai(1)
Sql php-vibrant course-mumbai(1)Sql php-vibrant course-mumbai(1)
Sql php-vibrant course-mumbai(1)vibrantuser
 
Python Utilities for Managing MySQL Databases
Python Utilities for Managing MySQL DatabasesPython Utilities for Managing MySQL Databases
Python Utilities for Managing MySQL DatabasesMats Kindahl
 
MySQL Ecosystem in 2020
MySQL Ecosystem in 2020MySQL Ecosystem in 2020
MySQL Ecosystem in 2020Alkin Tezuysal
 
Technology Day 2011 MySQL & MariaDB
Technology Day 2011 MySQL & MariaDBTechnology Day 2011 MySQL & MariaDB
Technology Day 2011 MySQL & MariaDBDan-Claudiu Dragoș
 
Free Software and the Future of Database Technology
Free Software and the Future of Database TechnologyFree Software and the Future of Database Technology
Free Software and the Future of Database Technologyelliando dias
 

Similaire à Mysql Fulltext Search (20)

My Sql And Search At Craigslist
My Sql And Search At CraigslistMy Sql And Search At Craigslist
My Sql And Search At Craigslist
 
MySQL Fulltext Search Tutorial
MySQL Fulltext Search TutorialMySQL Fulltext Search Tutorial
MySQL Fulltext Search Tutorial
 
Introduction to libre « fulltext » technology
Introduction to libre « fulltext » technologyIntroduction to libre « fulltext » technology
Introduction to libre « fulltext » technology
 
My sql crashcourse_intro_kdl
My sql crashcourse_intro_kdlMy sql crashcourse_intro_kdl
My sql crashcourse_intro_kdl
 
Sphinx new
Sphinx newSphinx new
Sphinx new
 
06 integrate elasticsearch
06 integrate elasticsearch06 integrate elasticsearch
06 integrate elasticsearch
 
Plugin Opensql2008 Sphinx
Plugin Opensql2008 SphinxPlugin Opensql2008 Sphinx
Plugin Opensql2008 Sphinx
 
Tagging and Folksonomy Schema Design for Scalability and Performance
Tagging and Folksonomy Schema Design for Scalability and PerformanceTagging and Folksonomy Schema Design for Scalability and Performance
Tagging and Folksonomy Schema Design for Scalability and Performance
 
CertiFUNcation 2017 Best Practices Extension Development for TYPO3 8 LTS
CertiFUNcation 2017 Best Practices Extension Development for TYPO3 8 LTSCertiFUNcation 2017 Best Practices Extension Development for TYPO3 8 LTS
CertiFUNcation 2017 Best Practices Extension Development for TYPO3 8 LTS
 
ElasticSearch AJUG 2013
ElasticSearch AJUG 2013ElasticSearch AJUG 2013
ElasticSearch AJUG 2013
 
Realtime Search Infrastructure at Craigslist (OpenWest 2014)
Realtime Search Infrastructure at Craigslist (OpenWest 2014)Realtime Search Infrastructure at Craigslist (OpenWest 2014)
Realtime Search Infrastructure at Craigslist (OpenWest 2014)
 
XML Amsterdam - Creating structure in unstructured data
XML Amsterdam - Creating structure in unstructured dataXML Amsterdam - Creating structure in unstructured data
XML Amsterdam - Creating structure in unstructured data
 
Infinispan,Lucene,Hibername OGM
Infinispan,Lucene,Hibername OGMInfinispan,Lucene,Hibername OGM
Infinispan,Lucene,Hibername OGM
 
Fact-Based Monitoring
Fact-Based MonitoringFact-Based Monitoring
Fact-Based Monitoring
 
Fact based monitoring
Fact based monitoringFact based monitoring
Fact based monitoring
 
Sql php-vibrant course-mumbai(1)
Sql php-vibrant course-mumbai(1)Sql php-vibrant course-mumbai(1)
Sql php-vibrant course-mumbai(1)
 
Python Utilities for Managing MySQL Databases
Python Utilities for Managing MySQL DatabasesPython Utilities for Managing MySQL Databases
Python Utilities for Managing MySQL Databases
 
MySQL Ecosystem in 2020
MySQL Ecosystem in 2020MySQL Ecosystem in 2020
MySQL Ecosystem in 2020
 
Technology Day 2011 MySQL & MariaDB
Technology Day 2011 MySQL & MariaDBTechnology Day 2011 MySQL & MariaDB
Technology Day 2011 MySQL & MariaDB
 
Free Software and the Future of Database Technology
Free Software and the Future of Database TechnologyFree Software and the Future of Database Technology
Free Software and the Future of Database Technology
 

Dernier

Top Rated Pune Call Girls Tingre Nagar ⟟ 6297143586 ⟟ Call Me For Genuine Se...
Top Rated  Pune Call Girls Tingre Nagar ⟟ 6297143586 ⟟ Call Me For Genuine Se...Top Rated  Pune Call Girls Tingre Nagar ⟟ 6297143586 ⟟ Call Me For Genuine Se...
Top Rated Pune Call Girls Tingre Nagar ⟟ 6297143586 ⟟ Call Me For Genuine Se...Call Girls in Nagpur High Profile
 
CALL ON ➥8923113531 🔝Call Girls Mahanagar Lucknow best sexual service
CALL ON ➥8923113531 🔝Call Girls Mahanagar Lucknow best sexual serviceCALL ON ➥8923113531 🔝Call Girls Mahanagar Lucknow best sexual service
CALL ON ➥8923113531 🔝Call Girls Mahanagar Lucknow best sexual serviceanilsa9823
 
Lucknow 💋 High Class Call Girls Lucknow 10k @ I'm VIP Independent Escorts Gir...
Lucknow 💋 High Class Call Girls Lucknow 10k @ I'm VIP Independent Escorts Gir...Lucknow 💋 High Class Call Girls Lucknow 10k @ I'm VIP Independent Escorts Gir...
Lucknow 💋 High Class Call Girls Lucknow 10k @ I'm VIP Independent Escorts Gir...anilsa9823
 
CALL ON ➥8923113531 🔝Call Girls Rajajipuram Lucknow best sexual service
CALL ON ➥8923113531 🔝Call Girls Rajajipuram Lucknow best sexual serviceCALL ON ➥8923113531 🔝Call Girls Rajajipuram Lucknow best sexual service
CALL ON ➥8923113531 🔝Call Girls Rajajipuram Lucknow best sexual serviceanilsa9823
 
2k Shots ≽ 9205541914 ≼ Call Girls In Mukherjee Nagar (Delhi)
2k Shots ≽ 9205541914 ≼ Call Girls In Mukherjee Nagar (Delhi)2k Shots ≽ 9205541914 ≼ Call Girls In Mukherjee Nagar (Delhi)
2k Shots ≽ 9205541914 ≼ Call Girls In Mukherjee Nagar (Delhi)Delhi Call girls
 
Pokemon Go... Unraveling the Conspiracy Theory
Pokemon Go... Unraveling the Conspiracy TheoryPokemon Go... Unraveling the Conspiracy Theory
Pokemon Go... Unraveling the Conspiracy Theorydrae5
 
$ Love Spells^ 💎 (310) 882-6330 in West Virginia, WV | Psychic Reading Best B...
$ Love Spells^ 💎 (310) 882-6330 in West Virginia, WV | Psychic Reading Best B...$ Love Spells^ 💎 (310) 882-6330 in West Virginia, WV | Psychic Reading Best B...
$ Love Spells^ 💎 (310) 882-6330 in West Virginia, WV | Psychic Reading Best B...PsychicRuben LoveSpells
 
Lilac Illustrated Social Psychology Presentation.pptx
Lilac Illustrated Social Psychology Presentation.pptxLilac Illustrated Social Psychology Presentation.pptx
Lilac Illustrated Social Psychology Presentation.pptxABMWeaklings
 
9892124323, Call Girls in mumbai, Vashi Call Girls , Kurla Call girls
9892124323, Call Girls in mumbai, Vashi Call Girls , Kurla Call girls9892124323, Call Girls in mumbai, Vashi Call Girls , Kurla Call girls
9892124323, Call Girls in mumbai, Vashi Call Girls , Kurla Call girlsPooja Nehwal
 
CALL ON ➥8923113531 🔝Call Girls Jankipuram Lucknow best sexual service
CALL ON ➥8923113531 🔝Call Girls Jankipuram Lucknow best sexual serviceCALL ON ➥8923113531 🔝Call Girls Jankipuram Lucknow best sexual service
CALL ON ➥8923113531 🔝Call Girls Jankipuram Lucknow best sexual serviceanilsa9823
 
8377087607 Full Enjoy @24/7-CLEAN-Call Girls In Chhatarpur,
8377087607 Full Enjoy @24/7-CLEAN-Call Girls In Chhatarpur,8377087607 Full Enjoy @24/7-CLEAN-Call Girls In Chhatarpur,
8377087607 Full Enjoy @24/7-CLEAN-Call Girls In Chhatarpur,dollysharma2066
 
2k Shots ≽ 9205541914 ≼ Call Girls In Dashrath Puri (Delhi)
2k Shots ≽ 9205541914 ≼ Call Girls In Dashrath Puri (Delhi)2k Shots ≽ 9205541914 ≼ Call Girls In Dashrath Puri (Delhi)
2k Shots ≽ 9205541914 ≼ Call Girls In Dashrath Puri (Delhi)Delhi Call girls
 
CALL ON ➥8923113531 🔝Call Girls Aliganj Lucknow best sexual service
CALL ON ➥8923113531 🔝Call Girls Aliganj Lucknow best sexual serviceCALL ON ➥8923113531 🔝Call Girls Aliganj Lucknow best sexual service
CALL ON ➥8923113531 🔝Call Girls Aliganj Lucknow best sexual serviceanilsa9823
 
2k Shots ≽ 9205541914 ≼ Call Girls In Palam (Delhi)
2k Shots ≽ 9205541914 ≼ Call Girls In Palam (Delhi)2k Shots ≽ 9205541914 ≼ Call Girls In Palam (Delhi)
2k Shots ≽ 9205541914 ≼ Call Girls In Palam (Delhi)Delhi Call girls
 
LC_YouSaidYes_NewBelieverBookletDone.pdf
LC_YouSaidYes_NewBelieverBookletDone.pdfLC_YouSaidYes_NewBelieverBookletDone.pdf
LC_YouSaidYes_NewBelieverBookletDone.pdfpastor83
 
call Now 9811711561 Cash Payment乂 Call Girls in Dwarka Mor
call Now 9811711561 Cash Payment乂 Call Girls in Dwarka Morcall Now 9811711561 Cash Payment乂 Call Girls in Dwarka Mor
call Now 9811711561 Cash Payment乂 Call Girls in Dwarka Morvikas rana
 
Introducing to billionaire brain wave.pdf
Introducing to billionaire brain wave.pdfIntroducing to billionaire brain wave.pdf
Introducing to billionaire brain wave.pdfnoumannajam04
 
CALL ON ➥8923113531 🔝Call Girls Adil Nagar Lucknow best Female service
CALL ON ➥8923113531 🔝Call Girls Adil Nagar Lucknow best Female serviceCALL ON ➥8923113531 🔝Call Girls Adil Nagar Lucknow best Female service
CALL ON ➥8923113531 🔝Call Girls Adil Nagar Lucknow best Female serviceanilsa9823
 

Dernier (20)

Top Rated Pune Call Girls Tingre Nagar ⟟ 6297143586 ⟟ Call Me For Genuine Se...
Top Rated  Pune Call Girls Tingre Nagar ⟟ 6297143586 ⟟ Call Me For Genuine Se...Top Rated  Pune Call Girls Tingre Nagar ⟟ 6297143586 ⟟ Call Me For Genuine Se...
Top Rated Pune Call Girls Tingre Nagar ⟟ 6297143586 ⟟ Call Me For Genuine Se...
 
CALL ON ➥8923113531 🔝Call Girls Mahanagar Lucknow best sexual service
CALL ON ➥8923113531 🔝Call Girls Mahanagar Lucknow best sexual serviceCALL ON ➥8923113531 🔝Call Girls Mahanagar Lucknow best sexual service
CALL ON ➥8923113531 🔝Call Girls Mahanagar Lucknow best sexual service
 
Lucknow 💋 High Class Call Girls Lucknow 10k @ I'm VIP Independent Escorts Gir...
Lucknow 💋 High Class Call Girls Lucknow 10k @ I'm VIP Independent Escorts Gir...Lucknow 💋 High Class Call Girls Lucknow 10k @ I'm VIP Independent Escorts Gir...
Lucknow 💋 High Class Call Girls Lucknow 10k @ I'm VIP Independent Escorts Gir...
 
CALL ON ➥8923113531 🔝Call Girls Rajajipuram Lucknow best sexual service
CALL ON ➥8923113531 🔝Call Girls Rajajipuram Lucknow best sexual serviceCALL ON ➥8923113531 🔝Call Girls Rajajipuram Lucknow best sexual service
CALL ON ➥8923113531 🔝Call Girls Rajajipuram Lucknow best sexual service
 
2k Shots ≽ 9205541914 ≼ Call Girls In Mukherjee Nagar (Delhi)
2k Shots ≽ 9205541914 ≼ Call Girls In Mukherjee Nagar (Delhi)2k Shots ≽ 9205541914 ≼ Call Girls In Mukherjee Nagar (Delhi)
2k Shots ≽ 9205541914 ≼ Call Girls In Mukherjee Nagar (Delhi)
 
Pokemon Go... Unraveling the Conspiracy Theory
Pokemon Go... Unraveling the Conspiracy TheoryPokemon Go... Unraveling the Conspiracy Theory
Pokemon Go... Unraveling the Conspiracy Theory
 
$ Love Spells^ 💎 (310) 882-6330 in West Virginia, WV | Psychic Reading Best B...
$ Love Spells^ 💎 (310) 882-6330 in West Virginia, WV | Psychic Reading Best B...$ Love Spells^ 💎 (310) 882-6330 in West Virginia, WV | Psychic Reading Best B...
$ Love Spells^ 💎 (310) 882-6330 in West Virginia, WV | Psychic Reading Best B...
 
Lilac Illustrated Social Psychology Presentation.pptx
Lilac Illustrated Social Psychology Presentation.pptxLilac Illustrated Social Psychology Presentation.pptx
Lilac Illustrated Social Psychology Presentation.pptx
 
9892124323, Call Girls in mumbai, Vashi Call Girls , Kurla Call girls
9892124323, Call Girls in mumbai, Vashi Call Girls , Kurla Call girls9892124323, Call Girls in mumbai, Vashi Call Girls , Kurla Call girls
9892124323, Call Girls in mumbai, Vashi Call Girls , Kurla Call girls
 
(Aarini) Russian Call Girls Surat Call Now 8250077686 Surat Escorts 24x7
(Aarini) Russian Call Girls Surat Call Now 8250077686 Surat Escorts 24x7(Aarini) Russian Call Girls Surat Call Now 8250077686 Surat Escorts 24x7
(Aarini) Russian Call Girls Surat Call Now 8250077686 Surat Escorts 24x7
 
CALL ON ➥8923113531 🔝Call Girls Jankipuram Lucknow best sexual service
CALL ON ➥8923113531 🔝Call Girls Jankipuram Lucknow best sexual serviceCALL ON ➥8923113531 🔝Call Girls Jankipuram Lucknow best sexual service
CALL ON ➥8923113531 🔝Call Girls Jankipuram Lucknow best sexual service
 
8377087607 Full Enjoy @24/7-CLEAN-Call Girls In Chhatarpur,
8377087607 Full Enjoy @24/7-CLEAN-Call Girls In Chhatarpur,8377087607 Full Enjoy @24/7-CLEAN-Call Girls In Chhatarpur,
8377087607 Full Enjoy @24/7-CLEAN-Call Girls In Chhatarpur,
 
2k Shots ≽ 9205541914 ≼ Call Girls In Dashrath Puri (Delhi)
2k Shots ≽ 9205541914 ≼ Call Girls In Dashrath Puri (Delhi)2k Shots ≽ 9205541914 ≼ Call Girls In Dashrath Puri (Delhi)
2k Shots ≽ 9205541914 ≼ Call Girls In Dashrath Puri (Delhi)
 
CALL ON ➥8923113531 🔝Call Girls Aliganj Lucknow best sexual service
CALL ON ➥8923113531 🔝Call Girls Aliganj Lucknow best sexual serviceCALL ON ➥8923113531 🔝Call Girls Aliganj Lucknow best sexual service
CALL ON ➥8923113531 🔝Call Girls Aliganj Lucknow best sexual service
 
2k Shots ≽ 9205541914 ≼ Call Girls In Palam (Delhi)
2k Shots ≽ 9205541914 ≼ Call Girls In Palam (Delhi)2k Shots ≽ 9205541914 ≼ Call Girls In Palam (Delhi)
2k Shots ≽ 9205541914 ≼ Call Girls In Palam (Delhi)
 
LC_YouSaidYes_NewBelieverBookletDone.pdf
LC_YouSaidYes_NewBelieverBookletDone.pdfLC_YouSaidYes_NewBelieverBookletDone.pdf
LC_YouSaidYes_NewBelieverBookletDone.pdf
 
call Now 9811711561 Cash Payment乂 Call Girls in Dwarka Mor
call Now 9811711561 Cash Payment乂 Call Girls in Dwarka Morcall Now 9811711561 Cash Payment乂 Call Girls in Dwarka Mor
call Now 9811711561 Cash Payment乂 Call Girls in Dwarka Mor
 
Introducing to billionaire brain wave.pdf
Introducing to billionaire brain wave.pdfIntroducing to billionaire brain wave.pdf
Introducing to billionaire brain wave.pdf
 
(Anamika) VIP Call Girls Navi Mumbai Call Now 8250077686 Navi Mumbai Escorts ...
(Anamika) VIP Call Girls Navi Mumbai Call Now 8250077686 Navi Mumbai Escorts ...(Anamika) VIP Call Girls Navi Mumbai Call Now 8250077686 Navi Mumbai Escorts ...
(Anamika) VIP Call Girls Navi Mumbai Call Now 8250077686 Navi Mumbai Escorts ...
 
CALL ON ➥8923113531 🔝Call Girls Adil Nagar Lucknow best Female service
CALL ON ➥8923113531 🔝Call Girls Adil Nagar Lucknow best Female serviceCALL ON ➥8923113531 🔝Call Girls Adil Nagar Lucknow best Female service
CALL ON ➥8923113531 🔝Call Girls Adil Nagar Lucknow best Female service
 

Mysql Fulltext Search

  • 1. MySQL Fulltext Search ComCon Frankfurt/Main, 2004 © MySQL AB 2004
  • 2. 2 ComCon: Fulltext Search | | Frankfurt 2004 MySQL Fulltext Search: Session Outline ● Fulltext search in MySQL ✔ overview ✔ modes of operation ✔ syntax ● Boolean Fulltext Search ✔ purpose ✔ operators ✔ relevance ranking ● Natural Language Search ✔ purpose ✔ relevance ranking ✔ query expansion ● Internal Structure of Fulltext Index ● TODO: directions of development Copyright 2004 MySQL AB
  • 3. 3 ComCon: Fulltext Search | | Frankfurt 2004 Who am I ? ● My name is Sergei Golubchik ● Originally from Ukraine, now living in Kerpen ● Primary developer of MySQL Fulltext Search ● Full-time MySQL AB employee since March 2000 ● Doing other things, besides fulltext search: ✔ indexes in MERGE tables ✔ bulk inserts ✔ parallel repair ✔ HANDLER ✔ ALTER TABLE ... ENABLE/DISABLE KEYS ✔ INSERT ... ON DUPLICATE KEY UPDATE ✔ security@mysql.com ✔ bug policeman Copyright 2004 MySQL AB
  • 4. 4 ComCon: Fulltext Search | | Frankfurt 2004 Fulltext search QuickPoll How many of you... ● have used MySQL Fulltext Search in production ? ✔ have at least tried using MySQL Fulltext search ? ✔ have used fulltext search in other products ? ● are interested in boolean fulltext search ? ✔ natural language search ? ✔ in our future plans for fulltext search ? ● are interested in how to tune and optimize your fulltext search application ? ● are interested in how MySQL Fulltext Search works internally ? ✔ have contributed code to Open Source products ? Copyright 2004 MySQL AB
  • 5. 5 ComCon: Fulltext Search | | Frankfurt 2004 History of MySQL Fulltext search ● 1995–1998 ✔ I was using various fulltext engines. No one could do complex queries on structured data ✔ Relational DBMSes could do it perfectly, and SQL was very capable – but they had no fulltext search capabilities ✔ MySQL RDBMS was Open Source and it was known to be very fast. It was MySQL 3.22.7 ● Oct. 1998: First version of fulltext search engine for ISAM ● May 1999: It was rewritten for MyISAM ● Oct. 1999: First public release ● Jun. 2000: MATCH ... AGAINST syntax ● Dec. 2001: Boolean fulltext search went public ● Jan. 2003: Major rewrite of the index structure code ● Sep. 2003: Unicode support, query expansion Copyright 2004 MySQL AB
  • 6. 6 ComCon: Fulltext Search | | Frankfurt 2004 Problem to solve ● Having a collection of documents, quickly find documents, that ✔ contain certain words, or ✔ are about some topic ● Applications are: ✔ digital libraries ✔ text (e.g. mail, news) archives ✔ you name it ● Requirements: ✔ fully dynamic index (no need for periodical reindexing) ✔ native SQL-like interface ✔ fast inserts/updates and searches ✔ reasonable effectiveness for natural language queries ✔ configurable, but easy to use ✔ moderate index size Copyright 2004 MySQL AB
  • 7. 7 ComCon: Fulltext Search | | Frankfurt 2004 Modes of Operation MySQL Fulltext Search engine supports two different search modes: ● Natural Language Search: ✔ MATCH (col1, col2, ...) AGAINST (quot;query phrasequot; [ WITH QUERY EXPANSION ] ) ✔ is supposed to find documents (rows) that are about the topic described in the query phrase ✔ the query is a phrase in natural human language (e.g. English) ● Boolean Search ✔ MATCH (col1, col2, ...) AGAINST (quot;query expressionquot; IN BOOLEAN MODE ) ✔ finds only rows that satisfy query expression exactly ✔ the query is written on special query language Copyright 2004 MySQL AB
  • 8. 8 ComCon: Fulltext Search | | Frankfurt 2004 Example 1 mysql> CREATE TABLE articles ( -> id INT UNSIGNED NOT NULL PRIMARY KEY, -> title VARCHAR(200), -> body TEXT, -> FULLTEXT (title,body) -> ); Query OK, 0 rows affected (0.00 sec) mysql> LOAD DATA INFILE 'test.txt' INTO TABLE articles; Query OK, 6 rows affected (0.00 sec) Records: 6 Duplicates: 0 Warnings: 0 Copyright 2004 MySQL AB
  • 9. 9 ComCon: Fulltext Search | | Frankfurt 2004 Example 2 mysql> SELECT * FROM articles -> WHERE MATCH (title,body) AGAINST ('database'); +----+-------------------+-----------------------------------+ | id | title | body | +----+-------------------+-----------------------------------+ | 5 | MySQL vs. YourSQL | In the following database compa...| | 1 | MySQL Tutorial | DBMS stands for DataBase. In th...| +----+-------------------+-----------------------------------+ 2 rows in set (0.00 sec) Copyright 2004 MySQL AB
  • 10. 10 ComCon: Fulltext Search | | Frankfurt 2004 Example 3 mysql> SELECT id, body, MATCH (title,body) AGAINST -> ('Security implications of running MySQL as root') -> AS score -> FROM articles WHERE MATCH (title,body) AGAINST -> ('Security implications of running MySQL as root'); +----+-------------------------------------+-----------------+ | id | body | score | +----+-------------------------------------+-----------------+ | 4 | 1. Never run mysqld as root. 2. ... | 1.5055546709332 | | 6 | When configured properly, MySQL ... | 1.31140957288 | +----+-------------------------------------+-----------------+ 2 rows in set (0.00 sec) Copyright 2004 MySQL AB
  • 11. 11 ComCon: Fulltext Search | | Frankfurt 2004 Example 4 mysql> SELECT * FROM articles WHERE MATCH (title,body) -> AGAINST ('MySQL'); 0 rows in set (0.00 sec) mysql> SELECT * FROM articles WHERE MATCH (title,body) -> AGAINST ('+MySQL -YourSQL' IN BOOLEAN MODE); +----+-------------------------+------------------------------+ | id | title | body | +----+-------------------------+------------------------------+ | 1 | MySQL Tutorial | DBMS stands for DataBase M...| | 2 | How To Use MySQL Effi...| After you went through a l...| | 3 | Optimising MySQL | In this tutorial we will s...| | 4 | 1001 MySQL Tricks | 1. Never run mysqld as root. | | 6 | MySQL Security | When configured properly M...| +----+-------------------------+------------------------------+ 5 rows in set (0.00 sec) Copyright 2004 MySQL AB
  • 12. 12 ComCon: Fulltext Search | | Frankfurt 2004 Boolean Fulltext Search ● Search is performed for words ● Query specifies what words must be present in every found row and what words must not ● Complex expressions can be created with boolean operators and parentheses ● No matter how complex search expression is, each row either satisfies it – and does it absolutely, result of comparison is TRUE – or does not satisfy it – and again, completely, value is FALSE ● For each row it is easy to say whether it matches given search expression or not ● Formulating a proper query can be very difficult Copyright 2004 MySQL AB
  • 13. 13 ComCon: Fulltext Search | | Frankfurt 2004 Operators in Boolean Fulltext Search ● apple banana ● +apple +juice ● +apple -macintosh ● +apple +(pie strudel) ● apple* ● quot;Big Applequot; ● +apple baked ● +apple ~baked ● +apple +(>pie <strudel) ✔ apple banana ↔ apple OR banana ✔ +apple +juice ↔ apple AND juice ✔ +apple baked ↔ ??? Copyright 2004 MySQL AB
  • 14. 14 ComCon: Fulltext Search | | Frankfurt 2004 Relevance Ranking ● There is no concept of relevance in boolean search ● “Extended boolean” search models provide relevance but break strict matching, they return partially matched rows ● In MySQL, boolean search is strictly boolean, yet some “relevance” value is available ● The logic is (in and/or syntax for simplicity): ✔ A or B weight(A)=weight(B)=1 ✔ A and B and C w(A)=w(B)=w(C)=⅓ ✔ A or (B and (C or D)) w(A)=1, w(B)=w(C)=w(D)=½ ✔ “relevance” of the row is the sum of weights of matched words, it cannot be less than 1 Copyright 2004 MySQL AB
  • 15. 15 ComCon: Fulltext Search | | Frankfurt 2004 Natural Language Search ● Looks for documents that are relevant to the free-text natural human language query ✔ e.g. “join algorithms in relational DBMS-es” ● There is no “absolute matching” here – document can be only partially relevant (and partially irrelevant) ● There is no way to define this “relevance” – different people will have different opinions on how relevant is one text to another ✔ search engines are trained on sample document/query sets where relevance judgments were provided by human experts ● One should never assume that MATCH ... AGAINST() will return rows that contain query words ✔ e.g. “Optimizing nested-loop joins in MySQL” is very relevant to the above query, but has no common words with it Copyright 2004 MySQL AB
  • 16. 16 ComCon: Fulltext Search | | Frankfurt 2004 Relevance Ranking ● Vector Space Model: ✔ n-dimensional space, where n – is number of unique words in the collection ✔ every document and every query is a vector in this space, with ith-coordinate to be weight of the word i in this document ✔ similarity between document and query is computed as a scalar product of their vectors, usually with a normalization factor ● There are many different theories proposing estimation of the word weight in a document ✔ generally, it can be decomposed as: wi = wi,local · wi,global ✔ In MySQL w i, local =wlog= ln tf i1 〈lntf i1 〉   N w i, global =w prob=ln −1 df i norm = 1 10.0115 n uniq Copyright 2004 MySQL AB
  • 17. 17 ComCon: Fulltext Search | | Frankfurt 2004 Query Expansion ● Also known as “automatic relevance feedback” ● Simple and proven technique for improving recall for short natural-language queries ● Natural language searches are known to work the best on relatively long queries ● Short queries carry too little semantic data to describe an implied (by the author) topic of search ● Query expansion works according to the following ✔ perform the search ✔ get the few most relevant document and add them to the original query ✔ repeat the search using the new expanded query ● Available in MySQL 4.1.1 Copyright 2004 MySQL AB
  • 18. 18 ComCon: Fulltext Search | | Frankfurt 2004 Example 1 mysql> SELECT * FROM books WHERE MATCH (title,body) --> AGAINST ('database' WITH QUERY EXPANSION); +----+--------------------+-----------------------------------+ | id | title | body | +----+--------------------+-----------------------------------+ | 5 | RDBMS Tutorial | Relational Database Management ...| | 9 | Relational algebra | The basic operations in the rel...| | 1 | Storage Engines | MySQL supports different storag...| | 19 | Oracle tuning | There are different techniques ...| +----+--------------------+-----------------------------------+ 4 rows in set (0.00 sec) Copyright 2004 MySQL AB
  • 19. 19 ComCon: Fulltext Search | | Frankfurt 2004 Example 2 mysql> SELECT * FROM books WHERE MATCH title AGAINST ('Megre --> and the reluctant witnesses' WITH QUERY EXPANSION); +-----+-------------------------------------+-----------------+ | id | title | author | +-----+-------------------------------------+-----------------+ | 843 | Maigret and the Reluctant Witnesses | Georges Simenon | | 409 | Maigret in Court | Georges Simenon | | 913 | Maigret Returns | Georges Simenon | | 981 | The Methods of Maigret | Georges Simenon | | 765 | Maigret and the Lazy Burglar | Georges Simenon | | 252 | Maigret and the Black Sheep | Georges Simenon | +-----+-------------------------------------+-----------------+ 6 rows in set (0.00 sec) Copyright 2004 MySQL AB
  • 20. 20 ComCon: Fulltext Search | | Frankfurt 2004 Search modes side-by-side ● Boolean mode ● Natural language mode ✔ searches for words ✔ searches for concepts ✔ uses query language ✔ free text queries ✔ suitable for experienced ✔ does not require computer users literacy ✔ provides only simplistic ✔ computes complicated (and rather arbitrary) theoretically grounded relevance ranking relevance ranking ✔ can work without ✔ requires FULLTEXT index FULLTEXT index for collection-wide statistics ✔ search is performed ✔ all the documents are incrementally found at once ✔ is faster ✔ is O(log N) slower Copyright 2004 MySQL AB
  • 21. 21 ComCon: Fulltext Search | | Frankfurt 2004 Fulltext Index Internals ● Key entry structure: ✔ { word(varchar), weight(float), rowid } ● MyISAM index – B-tree: ● Two level B-tree (MySQL 4.1): ✔ { word(varchar), count(long) } ✔ { weight(float), rowid } Copyright 2004 MySQL AB
  • 22. 22 ComCon: Fulltext Search | | Frankfurt 2004 Fulltext TODO ● Boolean Search: ✔ benefit from the new index structure ✔ proximity operators ● Natural Language Search: ✔ benefit from the new index structure ✔ new, more adequate weighting scheme ✔ language-dependent stem and stopwords ● General features: ✔ per-index settings ✔ support for binary charsets (UCS-2) ✔ support for MERGE tables ✔ “always index” word list (for “C++”, “TCP/IP”, etc) Copyright 2004 MySQL AB
  • 23. 23 ComCon: Fulltext Search | | Frankfurt 2004 That's all ! ● If you have any questions, you can ask them now ● Or you can ask me after the presentation ● Thanks for listening ☺ Copyright 2004 MySQL AB
  • 24. 24 ComCon: Fulltext Search | | Frankfurt 2004 Tuning & Optimization ● Key_buffer_size ● ft_stopword_file ● ft_min_word_len ● ft_max_word_len ● ft_query_expansion_limit ● myisam_sort_buffer_size ● myisam_max_sort_file_size ● searching for ”search*ing”: ✔ MATCH col AGAINST ('search*' IN BOOLEAN MODE) AND col REGEXP '[[:<:]]search[[:alnum:]]+ing[[:>:]]' Copyright 2004 MySQL AB
  • 25. 25 ComCon: Fulltext Search | | Frankfurt 2004 Benefits of new structure ● Natural Language Search: ✔ unsafe optimization: skip words with wi,global < ε ✔ reduced noise ✔ lesser number of rows returned  reduced I/O  reduced O(log N) speed penalty ● Boolean Search: ✔ in “+apple +avocado” queries, instead of intersecting long list of rows, containing word “apple” and the short list of rows with “avocado”, MySQL can look up rows from the short “avocado” list in the “apple” sub-B-tree, thus avoiding index scan Copyright 2004 MySQL AB