mysql ngram全文檢索引擎

2021-10-07 05:02:53 字數 2541 閱讀 3371

『』 『』 中的內容視作乙個短語(整體)

3.查詢

已經存在表

against

select

*from articles

where

match

(title,body)

against (

'文言文'

innatural

language

mode);

// 不指定模式,預設使用自然語言模式

select

*from articles

where

match

(title,body)

against (

'文言文'

);

當使用ngram分詞解析器時,innodb_ft_min_token_size和innodb_ft_max_token_size 無效

如何設定

第二種這三個引數均不可動態修改,修改了這些引數,需重啟mysql服務,並重新建立全文索引!!

查詢資料不完整?如資料中明明存在文言文, 但是查詢文言的時候查詢不到

解決方案

在boolean mode檢索模式下,查詢關鍵字表示式被轉換為乙個ngram短語檢索

ngram parser wildcard search

如果查詢的萬用字元長度大於ngram token size

ngram parser phrase search

2.執行 optimize table articles

rebuilding myisam full-text indexes

操作

create

table articles (

id int

unsigned

auto_increment

notnull

primary

key,

title varchar

(200),

body text

, fulltext key

`idx_ft_tb`

(title,body)

)engine

=innodb

character

set utf8mb4;

set names utf8mb4;

insert

into articles (title,body)

values

('calculate'

,'incomplete quere');

## 當修改了ngram_token_szie等引數的時候,需要重新建立索引

drop

index idx_ft_tb on test.articles ;

alter

table articles add fulltext index idx_ft_tb (title,body)

with parser ngram;

# 生成索引

setglobal innodb_ft_aux_table=

"test/articles"

;optimize

table articles;

# 這個命令適合myisam儲存引擎

repair table articles quick

;show variables like

'%token%'

mysql>

show variables like

'%token%';+

--------------------------+-------+

| variable_name |

value|+

--------------------------+-------+

| innodb_ft_max_token_size |84|

| innodb_ft_min_token_size |3|

| ngram_token_size |1|

+--------------------------+-------+

3rows

inset

檢視資料分詞結果

select

*from information_schema.innodb_ft_index_cache order

by doc_id, position;

select

*from articles where

match

(title,body) against(

'文言文*'

inboolean

mode);

select

*from articles where

match

(title,body) against(

'文言文'

);

全文檢索引擎 Sphinx

sphinx是乙個基於sql的全文檢索引擎,可以結合mysql,postgresql做全文搜尋,它可以提供比資料庫本身更專業的搜尋功能,使得應用程式更容易實現專業化的全文檢索。sphinx特別為一些指令碼語言設計搜尋api介面,如php,python,perl,ruby等,同時為mysql也設計了乙...

全文檢索引擎 Sphinx

sphinx是乙個基於sql的全文檢索引擎,可以結合mysql,postgresql做全文搜尋,它可以提供比資料庫本身更專業的搜尋功能,使得應用程式更容易實現專業化的全文檢索。sphinx特別為一些指令碼語言設計搜尋api介面,如php,python,perl,ruby等,同時為mysql也設計了乙...

倒排索引與全文檢索

乙個未經處理的資料庫中,一般是以文件id作為索引,文件內容作為記錄 而倒排索引指的是,將單詞或記錄作為索引,將文件id作為記錄,這樣便可以方便地通過索引來查詢到其所在的文件 例如 流程 將資料庫中的結構化資料資料轉換為非結構化資料 然後將非結構化資料轉化為分詞結構 配置與使用 syl setting...