42_初識搜尋引擎_query string的分詞以及mapping引入案例遺留問題的大揭秘

5765809發表於2024-10-02

課程大綱

1、query string分詞

query string必須以和index建立時相同的analyzer進行分詞
query string對exact value和full text的區別對待

date:exact value
_all:full text

比如我們有一個document,其中有一個field,包含的value是:hello you and me,建立倒排索引
我們要搜尋這個document對應的index,搜尋文字是hell me,這個搜尋文字就是query string
query string,預設情況下,es會使用它對應的field建立倒排索引時相同的分詞器去進行分詞,分詞和normalization,只有這樣,才能實現正確的搜尋

我們建立倒排索引的時候,將dogs --> dog,結果你搜尋的時候,還是一個dogs,那不就搜尋不到了嗎?所以搜尋的時候,那個dogs也必須變成dog才行。才能搜尋到。

知識點:不同型別的field,可能有的就是full text,有的就是exact value

post_date,date:exact value
_all:full text,分詞,normalization

2、mapping引入案例遺留問題大揭秘

GET /_search?q=2017

搜尋的是_all field,document所有的field都會拼接成一個大串,進行分詞

2017-01-02 my second article this is my second article in this website 11400

	doc1		doc2		doc3

2017 * * *
01 *
02 *
03 *

_all,2017,自然會搜尋到3個docuemnt

GET /_search?q=2017-01-01

_all,2017-01-01,query string會用跟建立倒排索引一樣的分詞器去進行分詞

2017
01
01

GET /_search?q=post_date:2017-01-01

date,會作為exact value去建立索引

	doc1		doc2		doc3

2017-01-01 *
2017-01-02 *
2017-01-03 *

post_date:2017-01-01,2017-01-01,doc1一條document

GET /_search?q=post_date:2017,這個在這裡不講解,因為是es 5.2以後做的一個最佳化

3、測試分詞器

GET /_analyze
{
"analyzer": "standard",
"text": "Text to analyze"
}

相關文章