elasticsearch學習五、全文檢索?

全文檢索的概念,就是對一篇文章進行索引,可以根據關鍵字搜尋,類似於關係型資料庫中的like語句。

前面只是使用了中文分詞(elasticsearch學習二、IK中文分詞的使用),必須詞庫中完全匹配的詞才能查出來。

2 elasticsearch學習二、IK中文分詞的使用

0 elasticsearch學習二、安裝中文分詞ik

方法/步驟

假設你的環境和我前面都一致的(elasticsearch學習二、安裝中文分詞ik)

檢視下分詞效果

curl -XGET '; -d '中國駐洛杉磯領事館遭亞裔男子槍擊'

elasticsearch學習五、全文檢索

確認索引的資料

新增:

curl -XPOST http://localhost:9200/index/fulltext/1 -d'{"content":"美國留給伊拉克的是個爛攤子嗎"}'

curl -XPOST http://localhost:9200/index/fulltext/2 -d'{"content":"公安部:各地校車將享最高路權"}'

curl -XPOST http://localhost:9200/index/fulltext/3 -d'{"content":"中韓漁警衝突調查:韓警平均每天扣1艘中國漁船"}'

curl -XPOST -d'{"content":"中國駐洛杉磯領事館遭亞裔男子槍擊 嫌犯已自首"}'

elasticsearch學習五、全文檢索

term檢索

如果content分詞後含有中國這個token,就會檢索到。即分詞後完全匹配

curl -XPOST -d'

{

"query" : { "term" : { "content" : "中國" }},

"highlight" : {

"pre_tags" : [" ", " "],

"post_tags" : ["", ""],

"fields" : {

"content" : {}

}

}

}'

只返回含有‘中國’的資料

elasticsearch學習五、全文檢索

querystring檢索

應該是將查詢的詞先分成詞庫中存在的詞,然後分別去檢索。存在任一存在的詞即返回,查詢詞分詞後是OR的關係。

curl -XPOST -d'

{

"query" : {

"query_string" : {

"default_field" : "content",

"query" : "中國美國"

}

}

}'

返回含有‘中國’或者‘美國’的資料

elasticsearch學習五、全文檢索

JAVA實現

Java其他內容可以可以看 elasticsearch學習四、JAVA呼叫

主要也就是建立查詢的時候

term:

QueryBuilder qs = QueryBuilders.termQuery("content", "中國");

query_string:

QueryStringQueryBuilder qs = new QueryStringQueryBuilder("中國美國");

qs.field("content");

0 elasticsearch學習四、JAVA呼叫

elasticsearch學習五、全文檢索

執行檢視結果

elasticsearch學習五、全文檢索

相關問題答案