全文檢索的概念,就是對一篇文章進行索引,可以根據關鍵字搜尋,類似於關係型資料庫中的like語句。
前面只是使用了中文分詞(elasticsearch學習二、IK中文分詞的使用),必須詞庫中完全匹配的詞才能查出來。
2 elasticsearch學習二、IK中文分詞的使用
0 elasticsearch學習二、安裝中文分詞ik
方法/步驟
假設你的環境和我前面都一致的(elasticsearch學習二、安裝中文分詞ik)
檢視下分詞效果
curl -XGET '; -d '中國駐洛杉磯領事館遭亞裔男子槍擊'
確認索引的資料
新增:
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":"中國駐洛杉磯領事館遭亞裔男子槍擊 嫌犯已自首"}'
term檢索
如果content分詞後含有中國這個token,就會檢索到。即分詞後完全匹配
curl -XPOST -d'
{
"query" : { "term" : { "content" : "中國" }},
"highlight" : {
"pre_tags" : ["
"post_tags" : ["", ""],
"fields" : {
"content" : {}
}
}
}'
只返回含有‘中國’的資料
querystring檢索
應該是將查詢的詞先分成詞庫中存在的詞,然後分別去檢索。存在任一存在的詞即返回,查詢詞分詞後是OR的關係。
curl -XPOST -d'
{
"query" : {
"query_string" : {
"default_field" : "content",
"query" : "中國美國"
}
}
}'
返回含有‘中國’或者‘美國’的資料
JAVA實現
Java其他內容可以可以看 elasticsearch學習四、JAVA呼叫
主要也就是建立查詢的時候
term:
QueryBuilder qs = QueryBuilders.termQuery("content", "中國");
query_string:
QueryStringQueryBuilder qs = new QueryStringQueryBuilder("中國美國");
qs.field("content");
0 elasticsearch學習四、JAVA呼叫
執行檢視結果