mysql的全文搜尋功能
12.7. 全文搜尋功能
-
MySQL支援全文索引和搜尋功能。MySQL中的全文索引型別FULLTEXT的索引。 FULLTEXT 索引僅可用於 MyISAM 表;他們可以從CHAR、 VARCHAR或TEXT列中作為CREATE TABLE語句的一部分被建立,或是隨後使用ALTER TABLE 或 CREATE INDEX被新增。對於較大的資料集,將你的資料輸入一個沒有FULLTEXT索引的表中,然後建立索引, 其速度比把資料輸入現有FULLTEXT索引的速度更為快。
全文搜尋同MATCH()函式一起執行。
mysql> CREATE TABLE articles (
->id INT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY,
-> title VARCHAR(200),
-> body TEXT,
-> FULLTEXT (title,body)
-> );
Query OK, 0 rows affected (0.00 sec)
mysql> INSERT INTO articles (title,body) VALUES
-> ('MySQL Tutorial','DBMS stands for DataBase ...'),
->('How To Use MySQL Well','After you went through a ...'),
-> ('Optimizing MySQL','In this tutorial we will show ...'),
-> ('1001 MySQL Tricks','1. Never run mysqld as root. 2. ...'),
-> ('MySQL vs. YourSQL','In the following database comparison ...'),
-> ('MySQL Security','When configured properly, MySQL ...');
Query OK, 6 rows affected (0.00 sec)
Records: 6 Duplicates: 0 Warnings: 0
mysql> SELECT * FROM articles
-> WHERE MATCH (title,body) AGAINST ('database');
+----+-------------------+------------------------------------------+
| id | title | body |
+----+-------------------+------------------------------------------+
| 5 | MySQL vs. YourSQL | In the following database comparison ... |
| 1 | MySQL Tutorial | DBMS stands for DataBase ... |
+----+-------------------+------------------------------------------+
2 rows in set (0.00 sec)
MATCH()函式對於一個字串執行資料庫內的自然語言搜尋。一個資料庫就是1套1個或2個包含在FULLTEXT內的列。搜尋字串作為對AGAINST()的引數而被給定。對於表中的每一行, MATCH() 返回一個相關值,即, 搜尋字串和 MATCH()表中指定列中該行文字之間的一個相似性度量。
在預設狀態下, 搜尋的執行方式為不區分大小寫方式。然而,你可以通過對編入索引的列使用二進位制排序方式執行區分大小寫的全文搜尋。例如,可以向一個使用latin1字符集的列給定latin1_bin的排序方式,對於全文搜尋區分大小寫。
如上述所舉例子,當MATCH()被用在一個WHERE 語句中時,相關值是非負浮點數。零相關的意思是沒有相似性。相關性的計算是基於該行中單詞的數目, 該行中獨特子的數目,資料庫中單詞的總數,以及包含特殊詞的檔案(行)數目。
對於自然語言全文搜尋,要求MATCH() 函式中命名的列和你的表中一些FULLTEXT索引中包含的列相同。對於前述問訊, 注意,MATCH()函式(題目及全文)中所命名的列和文章表的FULLTEXT索引中的列相同。若要分別搜尋題目和全文,應該對每個列建立FULLTEXT索引。
上面的例子基本上展示了怎樣使用返回行的相關性順序漸弱的MATCH()函式。而下面的例子則展示了怎樣明確地檢索相關值。返回行的順序是不定的,原因是 SELECT 語句不包含 WHERE或ORDER BY 子句:
mysql> SELECT id, MATCH (title,body) AGAINST ('Tutorial')
-> FROM articles;
+----+-----------------------------------------+
| id | MATCH (title,body) AGAINST ('Tutorial') |
+----+-----------------------------------------+
| 1 | 0.65545833110809 |
| 2 | 0 |
| 3 | 0.66266459226608 |
| 4 | 0 |
| 5 | 0 |
| 6 | 0 |
+----+-----------------------------------------+
6 rows in set (0.00 sec)
下面的例子則更加複雜。詢問返回相關值,同時對行按照相關性漸弱的順序進行排序。為實現這個結果,你應該兩次指定 MATCH(): 一次在 SELECT 列表中而另一次在 WHERE子句中。這不會引起額外的內務操作,原因是MySQL 優化程式注意到兩個MATCH()呼叫是相同的,從而只會啟用一次全文搜尋程式碼。
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.5219271183014 |
| 6 | When configured properly, MySQL ... | 1.3114095926285 |
+----+-------------------------------------+-----------------+
2 rows in set (0.00 sec)
表中有2行(0.00 秒)
MySQL FULLTEXT 執行將任何單字字元原形 (字母、數字和下劃線部分)的序列視為一個單詞。這個序列或許也包含單引號 ('),但在一行中不會超過一個。 這意味著 aaa'bbb 會被視為一個單詞,而 aaa''bbb則被視為2個單詞。位於單詞之前或其後的單引號會被FULLTEXT分析程式去掉; 'aaa'bbb' 會變成 aaa'bbb。
FULLTEXT分析程式會通過尋找某些分隔符來確定單詞的起始位置和結束位置,例如' ' (間隔符號)、 , (逗號)以及 . (句號 )。假如單詞沒有被分隔符分開,(例如在中文裡 ), 則 FULLTEXT 分析程式不能確定一個詞的起始位置和結束位置。為了能夠在這樣的語言中向FULLTEXT 索引新增單詞或其它編入索引的術語,你必須對它們進行預處理,使其被一些諸如"之類的任意分隔符分隔開。
一些詞在全文搜尋中會被忽略:
- 任何過於短的詞都會被忽略。 全文搜尋所能找到的詞的預設最小長度為 4個字元。
- 停止字中的詞會被忽略。禁用詞就是一個像“the” 或“some” 這樣過於平常而被認為是不具語義的詞。存在一個內建的停止字, 但它可以通過使用者自定義列表被改寫。請參見12.7.5節,“微調MySQL全文搜尋”。
詞庫和詢問中每一個正確的單詞根據其在詞庫和詢問中的重要性而被衡量。通過這種方式,一個出現在許多檔案中的單詞具有較低的重要性(而且甚至很多單詞的重要性為零),原因是在這個特別詞庫中其語義價值較低。反之,假如這個單詞比較少見,那麼它會得到一個較高的重要性。然後單詞的重要性被組合,從而用來計算該行的相關性。
這項技術最適合同大型詞庫一起使用 (事實上, 此時它經過仔細的調整 )。對於很小的表,單詞分佈並不能充分反映它們的語義價值, 而這個模式有時可能會產生奇特的結果。例如, 雖然單詞 “MySQL” 出現在文章表中的每一行,但對這個詞的搜尋可能得不到任何結果:
mysql> SELECT * FROM articles
-> WHERE MATCH (title,body) AGAINST ('MySQL');
找不到搜尋的詞(0.00 秒)
這個搜尋的結果為空,原因是單詞 “MySQL” 出現在至少全文的50%的行中。 因此, 它被列入停止字。對於大型資料集,使用這個操作最合適不過了----一個自然語言問詢不會從一個1GB 的表每隔一行返回一次。對於小型資料集,它的用處可能比較小。
一個符合表中所有行的內容的一半的單詞查詢相關文件的可能性較小。事實上, 它更容易找到很多不相關的內容。我們都知道,當我們在因特網上試圖使用搜索引擎尋找資料的時候,這種情況發生的頻率頗高。可以推論,包含該單詞的行因其所在特別資料集 而被賦予較低的語義價值。 一個給定的詞有可能在一個數據集中擁有超過其50%的域值,而在另一個數據集卻不然。
當你第一次嘗試使用全文搜尋以瞭解其工作過程時,這個50% 的域值提供重要的蘊涵操作:若你建立了一個表,並且只將文章的1、2行插入其中, 而文中的每個單詞在所有行中出現的機率至少為 50% 。那麼結果是你什麼也不會搜尋到。一定要插入至少3行,並且多多益善。需要繞過該50% 限制的使用者可使用布林搜尋程式碼;見12.7.1節,“布林全文搜尋”。
12.7.1. 布林全文搜尋
利用IN BOOLEAN MODE修改程式, MySQL 也可以執行布林全文搜尋:
mysql> SELECT * FROM articles WHERE MATCH (title,body)
-> AGAINST ('+MySQL -YourSQL' IN BOOLEAN MODE);
+----+-----------------------+-------------------------------------+
| id | title | body |
+----+-----------------------+-------------------------------------+
| 1 | MySQL Tutorial | DBMS stands for DataBase ... |
| 2 | How To Use MySQL Well | After you went through a ... |
| 3 | Optimizing MySQL | In this tutorial we will show ... |
| 4 | 1001 MySQL Tricks | 1. Never run mysqld as root. 2. ... |
| 6 | MySQL Security | When configured properly, MySQL ... |
+----+-----------------------+-------------------------------------+
這個問詢檢索所有包含單詞“MySQL”的行,但不檢索包含單詞“YourSQL”的行。
布林全文搜尋具有以下特點:
- 它們不使用 50% 域值。.
- 它們不會按照相關性漸弱的順序將行進行分類。你可以從上述問詢結果中看到這一點:相關性最高的行是一個包含兩個“MySQL” 的行,但它被列在最後的位置,而不是開頭位置。
- 即使沒有FULLTEXT,它們仍然可以工作,儘管這種方式的搜尋執行的速度非常之慢。
- 最小單詞長度全文引數和最大單詞長度全文引數均適用。
- 停止字適用。
布林全文搜尋的效能支援以下操作符:
- +
一個前導的加號表示該單詞必須 出現在返回的每一行的開頭位置。
- -
一個前導的減號表示該單詞一定不能出現在任何返回的行中。
- (無操作符)
在預設狀態下(當沒有指定 + 或–的情況下),該單詞可有可無,但含有該單詞的行等級較高。這和MATCH() ... AGAINST()不使用IN BOOLEAN MODE修改程式時的運作很類似。
- > <
這兩個操作符用來改變一個單詞對賦予某一行的相關值的影響。 > 操作符增強其影響,而 <操作符則減弱其影響。請參見下面的例子。
- ( )
括號用來將單詞分成子表示式。括入括號的部分可以被巢狀。
- ~
一個前導的代字號用作否定符, 用來否定單詞對該行相關性的影響。 這對於標記“noise(無用資訊)”的單詞很有用。包含這類單詞的行較其它行等級低,但因其可能會和-號同時使用,因而不會在任何時候都派出所有無用資訊行。
- *
星號用作截斷符。於其它符號不同的是,它應當被追加到要截斷的詞上。
- "
一個被括入雙引號的短語 (‘"’) 只和字面上包含該短語輸入格式的行進行匹配。全文引擎將短語拆分成單詞,在FULLTEXT索引中搜索該單詞。非單詞字元不需要嚴密的匹配:短語搜尋只要求符合搜尋短語包含的單詞且單詞的排列順序相同的內容。例如, "test phrase" 符合 "test, phrase"。
若索引中不存在該短語包含的單詞,則結果為空。例如,若所有單詞都是禁用詞,或是長度都小於編入索引單詞的最小長度,則結果為空。
以下例子展示了一些使用布林全文符號的搜尋字串:
- 'apple banana'
尋找包含至少兩個單詞中的一個的行。
- '+apple +juice'
尋找兩個單詞都包含的行。
- '+apple macintosh'
尋找包含單詞“apple”的行,若這些行也包含單詞“macintosh”, 則列為更高等級。
- '+apple -macintosh'
尋找包含單詞“apple” 但不包含單詞 “macintosh”的行。
- '+apple +(>turnover <strudel)'
尋找包含單詞“apple”和“turnover” 的行,或包含“apple” 和“strudel”的行 (無先後順序),然而包含 “apple turnover”的行較包含“apple strudel”的行排列等級更為高。
- 'apple*'
尋找包含“apple”、“apples”、“applesauce”或“applet”的行。
- '"some words"'
尋找包含原短語“some words”的行 (例如,包含“some words of wisdom” 的行,而非包含“some noise words”的行)。注意包圍片語的‘"’ 符號是界定短語的操作符字元。它們不是包圍搜尋字串本身的引號。
12.7.2. 全文搜尋帶查詢擴充套件
全文搜尋支援查詢擴充套件功能 (特別是其多變的“盲查詢擴充套件功能” )。若搜尋短語的長度過短, 那麼使用者則需要依靠全文搜尋引擎通常缺乏的內隱知識進行查詢。這時,查詢擴充套件功能通常很有用。例如, 某位搜尋 “database” 一詞的使用者,可能認為“MySQL”、“Oracle”、“DB2” and “RDBMS”均為符合 “databases”的項,因此都應被返回。這既為內隱知識。
在下列搜尋短語後新增WITH QUERY EXPANSION,啟用盲查詢擴充套件功能(即通常所說的自動相關性反饋)。它將執行兩次搜尋,其中第二次搜尋的搜尋短語是同第一次搜尋時找到的少數頂層檔案連線的原始搜尋短語。這樣,假如這些檔案中的一個 含有單詞 “databases” 以及單詞 “MySQL”, 則第二次搜尋會尋找含有單詞“MySQL” 的檔案,即使這些檔案不包含單詞 “database”。下面的例子顯示了這個不同之處:
mysql> SELECT * FROM articles
-> WHERE MATCH (title,body) AGAINST ('database');
+----+-------------------+------------------------------------------+
| id | title | body |
+----+-------------------+------------------------------------------+
| 5 | MySQL vs. YourSQL | In the following database comparison ... |
| 1 | MySQL Tutorial | DBMS stands for DataBase ... |
+----+-------------------+------------------------------------------+
2 rows in set (0.00 sec)
mysql> SELECT * FROM articles
-> WHERE MATCH (title,body)
-> AGAINST ('database' WITH QUERY EXPANSION);
+----+-------------------+------------------------------------------+
| id | title | body |
+----+-------------------+------------------------------------------+
| 1 | MySQL Tutorial | DBMS stands for DataBase ... |
| 5 | MySQL vs. YourSQL | In the following database comparison ... |
| 3 | Optimizing MySQL | In this tutorial we will show ... |
+----+-------------------+------------------------------------------+
3 rows in set (0.00 sec)
另一個例子是Georges Simenon 搜尋關於Maigret的書籍, 這個使用者不確定“Maigret”一詞的拼法。若不使用查詢擴充套件而搜尋“Megre and the reluctant witnesses” 得到的結果只能是的“Maigret and the Reluctant Witnesses” 。 而帶有查詢擴充套件的搜尋會在第二遍得到帶有“Maigret”一詞的所有書名。
註釋: 盲查詢擴充套件功能很容易返回非相關檔案而增加無用資訊,因此只有在查詢一個長度很短的短語時才有必要使用這項功能。12.7.3. 全文停止字
以下表列出了預設的全文停止字:
a's | able | about | above | according |
accordingly | across | actually | after | afterwards |
again | against | ain't | all | allow |
allows | almost | alone | along | already |
also | although | always | am | among |
amongst | an | and | another | any |
anybody | anyhow | anyone | anything | anyway |
anyways | anywhere | apart | appear | appreciate |
appropriate | are | aren't | around | as |
aside | ask | asking | associated | at |
available | away | awfully | be | became |
because | become | becomes | becoming | been |
before | beforehand | behind | being | believe |
below | beside | besides | best | better |
between | beyond | both | brief | but |
by | c'mon | c's | came | can |
can't | cannot | cant | cause | causes |
certain | certainly | changes | clearly | co |
com | come | comes | concerning | consequently |
consider | considering | contain | containing | contains |
corresponding | could | couldn't | course | currently |
definitely | described | despite | did | didn't |
different | do | does | doesn't | doing |
don't | done | down | downwards | during |
each | edu | eg | eight | either |
else | elsewhere | enough | entirely | especially |
et | etc | even | ever | every |
everybody | everyone | everything | everywhere | ex |
exactly | example | except | far | few |
fifth | first | five | followed | following |
follows | for | former | formerly | forth |
four | from | further | furthermore | get |
gets | getting | given | gives | go |
goes | going | gone | got | gotten |
greetings | had | hadn't | happens | hardly |
has | hasn't | have | haven't | having |
he | he's | hello | help | hence |
her | here | here's | hereafter | hereby |
herein | hereupon | hers | herself | hi |
him | himself | his | hither | hopefully |
how | howbeit | however | i'd | i'll |
i'm | i've | ie | if | ignored |
immediate | in | inasmuch | inc | indeed |
indicate | indicated | indicates | inner | insofar |
instead | into | inward | is | isn't |
it | it'd | it'll | it's | its |
itself | just | keep | keeps | kept |
know | knows | known | last | lately |
later | latter | latterly | least | less |
lest | let | let's | like | liked |
likely | little | look | looking | looks |
ltd | mainly | many | may | maybe |
me | mean | meanwhile | merely | might |
more | moreover | most | mostly | much |
must | my | myself | name | namely |
nd | near | nearly | necessary | need |
needs | neither | never | nevertheless | new |
next | nine | no | nobody | non |
none | noone | nor | normally | not |
nothing | novel | now | nowhere | obviously |
of | off | often | oh | ok |
okay | old | on | once | one |
ones | only | onto | or | other |
others | otherwise | ought | our | ours |
ourselves | out | outside | over | overall |
own | particular | particularly | per | perhaps |
placed | please | plus | possible | presumably |
probably | provides | que | quite | qv |
rather | rd | re | really | reasonably |
regarding | regardless | regards | relatively | respectively |
right | said | same | saw | say |
saying | says | second | secondly | see |
seeing | seem | seemed | seeming | seems |
seen | self | selves | sensible | sent |
serious | seriously | seven | several | shall |
she | should | shouldn't | since | six |
so | some | somebody | somehow | someone |
something | sometime | sometimes | somewhat | somewhere |
soon | sorry | specified | specify | specifying |
still | sub | such | sup | sure |
t's | take | taken | tell | tends |
th | than | thank | thanks | thanx |
that | that's | thats | the | their |
theirs | them | themselves | then | thence |
there | there's | thereafter | thereby | therefore |
therein | theres | thereupon | these | they |
they'd | they'll | they're | they've | think |
third | this | thorough | thoroughly | those |
though | three | through | throughout | thru |
thus | to | together | too | took |
toward | towards | tried | tries | truly |
try | trying | twice | two | un |
under | unfortunately | unless | unlikely | until |
unto | up | upon | us | use |
used | useful | uses | using | usually |
value | various | very | via | viz |
vs | want | wants | was | wasn't |
way | we | we'd | we'll | we're |
we've | welcome | well | went | were |
weren't | what | what's | whatever | when |
whence | whenever | where | where's | whereafter |
whereas | whereby | wherein | whereupon | wherever |
whether | which | while | whither | who |
who's | whoever | whole | whom | whose |
why | will | willing | wish | with |
within | without | won't | wonder | would |
would | wouldn't | yes | yet | you |
you'd | you'll | you're | you've | your |
yours | yourself | yourselves | zero |
12.7.4. 全文限定條件
- 全文搜尋只適用於 MyISAM 表。
- 全文搜尋可以同大多數多位元組字符集一起使用。Unicode屬於例外情況; 可使用utf8 字符集 , 而非ucs2字符集。
- 諸如漢語和日語這樣的表意語言沒有自定界符。因此, FULLTEXT分析程式不能確定在這些或其它的這類語言中詞的起始和結束的位置。其隱含操作及該問題的一些工作區在12.7節,“全文搜尋功能”有詳細論述。
- 若支援在一個單獨表中使用多字符集,則所有 FULLTEXT索引中的列 必須使用同樣的字符集和庫。
- MATCH()列列表必須同該表中一些 FULLTEXT索引定義中的列列表完全符合,除非MATCH()在IN BOOLEAN MODE。
- 對AGAINST() 的引數必須是一個常數字符串。
12.7.5. 微調MySQL全文搜尋
MySQL的全文搜尋容量幾乎不具有使用者調節引數。假如你擁有一個 MySQL源分佈,你就能對全文搜尋效能行使更多控制,原因是一些變化需要原始碼修改。請參見2.8節,“使用原始碼分發版安裝MySQL”。
注意,為了更加有效,需要對全文搜尋謹慎調節。實際上,在大多數情況下修改預設效能只能降低其效能。 除非你知道自己在做什麼,否則不要改變 MySQL源。
下述的大多數全文變數必須在伺服器啟動時被設定。為了改變它們,還要重新啟動伺服器;在伺服器正在執行期間,他們不會被改變。
一些變數的改變需要你重建表中的 FULLTEXT 索引。本章結尾部分給出了其有關操作說明。
- ft_min_word_len and ft_max_word_len系統自變數規定了被編入索引單詞的最小長度和最大長度。(見5.3.3節,“伺服器系統變數”.) 預設的最小值為四個字元;預設的最大值取決於使用的 MySQL 版本。假如你改變任意一個值,那麼你必須重建你的 FULLTEXT索引。 例如,若你希望一個3字元的單詞變為可查詢項,則可以通過將以下行移動到一個供選擇檔案裡,從而設定 ft_min_word_len 變數:
·[mysqld]
·ft_min_word_len=3
然後重新啟動伺服器,重建你的 FULLTEXT索引。同時還要特別注意該表後面的說明中的關於myisamchk的註釋。
- 若要覆蓋預設停止字,則可設定 ft_stopword_file 系統變數。 (見5.3.3節,“伺服器系統變數”)。 變數值應為包含停止字的檔案路徑名, 或是用來截止禁用詞過濾的空字串。在改變了這個變數的值或禁用詞檔案的內容後, 重建你的 FULLTEXT索引。
停止字是自由形態的,換言之,你可使用任何諸如newline、 space或comma這樣的非字母數字字元來分隔禁用詞。 下劃線字元(_) 和被視為單詞的一部分的單引號 (')例外。停止字字符集為伺服器預設字符集;見10.3.1節,“伺服器字符集和校對”.
- 自然語言查詢的50%閾值由所選擇的特別權衡方案所決定。若要阻止它,myisam/ftdefs.h 中尋找以下行:
·#define GWS_IN_USE GWS_PROB
將該行改為:
#define GWS_IN_USE GWS_FREQ
然後重新編譯 MySQL。此時不需要重建索引。註釋:這樣做你會嚴重的By 降低 MySQL為MATCH()函式提供合適的相關值得能力。假如你爭得需要搜尋這樣的普通詞,而使用IN BOOLEAN MODE代替的效果更好,因為它不遵循 50% 閾值。
- 要改變用於布林全文搜尋的操作符,設定 ft_boolean_syntax 系統變數。 這個變數也可以在伺服器執行時被改變,但你必須有SUPER 特權才能這麼做。在這種情況下不需要重建索引。 見5.3.3節,“伺服器系統變數”, 它向我們說明了怎樣使用這個變數的規則。
假如你改變了影響索引的全文變數 (ft_min_word_len、 ft_max_word_len或ft_stopword_file),或假如你改變了禁用詞檔案本身,則你必須在改變和重新啟動伺服器後重建你的 FULLTEXT索引。這時,要重建索引, 只需進行一個 QUICK 修理操作:
mysql> REPAIR TABLE tbl_name QUICK;
注意,假如你使用 myisamchk 來執行一項修改表索引的操作 (諸如修理或分析 ), 則使用最小單詞長度和最大單詞長度以及停止字的預設全文引數值重建FULLTEXT索引,除非你已另外指定。這會導致問詢失敗。
發生這個問題的原因是隻有伺服器認識這些引數。它們的儲存位置不在 MyISAM 索引檔案中。若你已經修改了最小單詞長度或最大單詞長度或伺服器中的停止字,為避免這個問題,為你對mysqld所使用的myisamchk指定同樣的 ft_min_word_len、 ft_max_word_len和ft_stopword_file值。例如,假如你已經將最小單詞長度設定為 3, 則你可以這樣修改一個帶有myisamchk的表:
shell> myisamchk --recover --ft_min_word_len=3 tbl_name.MYI
為保證 myisamchk及伺服器對全文引數使用相同的值, 可將每一項都放在供選檔案中的 [mysqld]和 [myisamchk] 部分:
[mysqld]
ft_min_word_len=3
[myisamchk]
ft_min_word_len=3
使用 REPAIR TABLE、 ANALYZE TABLE、OPTIMIZE TABLE或ALTER TABLE來代替使用 myisamchk。這些語句通過伺服器來執行,伺服器知道使用哪個全文引數值更加合適。
相關推薦
mysql的全文搜尋功能
12.7. 全文搜尋功能 MySQL支援全文索引和搜尋功能。MySQL中的全文索引型別FULLTEXT的索引。 FULLTEXT 索引僅可用於 MyISAM 表;他們可以從CHAR、 VARCHAR或TEXT列中作為CREATE TABLE語句的一部分被建
MySQL全文索引功能
說明 自然語言全文索引 布林全文索引 相關性計算 擴充套件查詢 官網地址:https://dev.mysql.com/doc/refman/5
Mysql全文搜尋match against的用法
全文檢索在 MySQL 中就是一個 FULLTEXT 型別索引。FULLTEXT 索引用於 MyISAM 表,可以在 CREATE TABLE 時或之後使用 ALTER TABLE 或 CREATE INDEX 在 CHAR、 VARCHAR 或 TEXT 列上建立對於大的
Solr(全文搜尋功能)的介紹,安裝及配置
Solr(全文搜尋功能) Solr是什麼? Solr 是Apache下的一個頂級開源專案,採用Java開發,它是基於Lucene的全文搜尋伺服器。Solr提供了比Lucene更為豐富的查詢語言,同時實現了可配置、可擴充套件,並對索引、搜尋效能進行了優
Mysql全文搜尋之MATCH...AGAINST的用法介紹
前提:mysql只支援英文內容的全文索引,所以只考慮英文的全文搜尋。假定資料表名為post,有三列:id、title、content。id是自增長序號,title是varchar,content是text,給content新增全文索引。 mysql全文搜尋有三種模式:一、自
全文搜尋技術--solr7.1之mysql的安裝步驟
1.安裝命令 #>線上安裝wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm 輸完上面一句話不能正常的下載安裝包可以試試下面這句話 yum -y install wget 然後繼續執行下面的語句 rpm -ivh
【Lucene】Apache Lucene全文檢索引擎架構之搜尋功能
上一節主要總結了一下Lucene是如何構建索引的,這一節簡單總結一下Lucene中的搜尋功能。主要分為幾個部分,對特定項的搜尋;查詢表示式QueryParser的使用;指定數字範圍內搜尋;指定字串開
Sphinx+Mysql+中文分詞安裝-實現中文全文搜尋
1、什麼是SphinxSphinx 是一個在GPLv2 下發布的一個全文檢索引擎,商業授權(例如, 嵌入到其他程式中)需要聯絡我們(Sphinxsearch.com)以獲得商業授權。一般而言,Sphinx是一個獨立的搜尋引擎,意圖為其他應用提供高速、低空間佔用、高結果相關度的
Java for Web學習筆記(一二三):搜尋(5)MySQL全文索引(下)
小例子我們在表格Ticket和TicketComment中加入了fulltext key。小例子在Ticket的Subject或Body,以及在TicketComment的Body檢索內容,按分頁方式顯示出來,同時顯示關聯分數,並按關聯分數降序排列。 -- Ticket中隊S
mysql全文索引之模糊查詢
http mysql5 var innodb 沒有 null into user 測試數據 舊版的MySQL的全文索引只能用在MyISAM表格的char、varchar和text的字段上。 不過新版的MySQL5.6.24上InnoDB引擎也加入了全文索引,所以具體信息大家
Navicat for MySQL用ssh功能連接遠程數據庫
net window blog src windows borde 點擊 文章 遠程 轉載自:http://holy2010.blog.51cto.com/1086044/518431 實現用本地的ssh隧道起到加密功能 在windows平臺上運行Navicat for
mysql慢查詢功能詳解
mysql 慢查詢 優化有人的地方就有江湖,數據庫也是,sql優化這個問題,任重道遠,我們總是禁不住有爛sql。怎麽辦呢,還好各大數據庫都有相關爛sql的收集功能,而mysql的慢查詢收集也是異曲同工,配合分析sql的執行計劃,這個優化就有了搞頭了。開啟mysql慢查詢日誌1.查看當前慢查詢設置情況#查看慢查
[實操筆記]MySQL主從同步功能實現
就會 class tails 修改 高可用性 innodb leg 讀寫 mil 寫在前邊: 這兩天來了個需求,配置部署兩臺服務器的MySQL數據同步,折騰了兩天查了很多相關資料,一直連不上,後來發現其實是數據庫授權的ip有問題,我們用的服務器是機房中的虛擬機加上反向代理出
8.7.4 mysql 內置功能 - 存儲過程
hal rom () odi .py int student 存儲過程 查看 一 存儲過程 一 存儲過程介紹 存儲過程包含了一系列可執行的sql語句,存儲過程存放於MySQL中,通過調用它的名字可以執行其內部的一堆sql 使用存儲過程的優點: #1. 用於替代程
ali yun RDS for MySQL的基本功能
jaali yun RDS for MySQL的基本功能創建實例 包年包月: 按量付費: 選擇地域:非常重要 數據類型:Mysql/SQlserver/PostgreSQL/PPAS 版本:非常重要 基礎版|高可用版 存儲類型:本地SSD 可用區:可用區A,可用區AB,多可用區1 網絡類型:專
15-[mysql內置功能]--函數,流程控制
pytho count 生成 leave 多字節 () -- news Coding 1、MySQL中提供了許多內置函數 一、數學函數 ROUND(x,y) 返回參數x的四舍五入的有y位小數的值 RAND()
MySQL優化器功能開關optimizer_switch
tin fan filter 條件過濾 optimize 5.5 尋找 index 提交 MySQL 8.0新增特性 use_invisible_indexes:是否使用不可見索引,MySQL 8.0新增可以創建invisible索引,這一開關控制優化器是否使用invisi
mysql實現row_number() 功能
分享圖片 ffffff where rom ESS image 排名 分享 number 查詢test表按group_id分組取sort_id前100個 SELECT id AS ‘原數據ID‘,group_id AS ‘分組ID‘,sort_id AS ‘排序條件‘,n
Vue js中簡單的搜尋功能
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> <script src="https://
利用字典索引功能製作一個選擇搜尋功能
1 dic = { 2 "植物": 3 {"草本植物": 4 ["牽牛花", "瓜葉菊", "葫蘆", "翠菊", "冬小麥", "甜菜"], 5 "木本植物": 6 ["喬木", "灌木", "半