日本搞逼视频_黄色一级片免费在线观看_色99久久_性明星video另类hd_欧美77_综合在线视频

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > php框架 > 框架設計 > [Elasticsearch] 全文搜索 (三) - match查詢和bool查詢的關系,提升查詢子句

[Elasticsearch] 全文搜索 (三) - match查詢和bool查詢的關系,提升查詢子句

來源:程序員人生   發布時間:2015-01-04 09:52:14 閱讀次數:7732次

match查詢是如何使用bool查詢的

現在,你或許意想到了使用了match查詢的多詞查詢只是簡單地將生成的term查詢包括在了1個bool查詢中。通過默許的or操作符,每一個term查詢都以1個語句被添加,所以致少1個should語句需要被匹配。以下兩個查詢是等價的:

{ "match": { "title": "brown fox"} } { "bool": { "should": [ { "term": { "title": "brown" }}, { "term": { "title": "fox" }} ] } }

使用and操作符時,所有的term查詢都以must語句被添加,因此所有的查詢都需要匹配。以下兩個查詢是等價的:

{ "match": { "title": { "query": "brown fox", "operator": "and" } } } { "bool": { "must": [ { "term": { "title": "brown" }}, { "term": { "title": "fox" }} ] } }

如果指定了minimum_should_match參數,它會直接被傳入到bool查詢中,因此下面兩個查詢是等價的:

{ "match": { "title": { "query": "quick brown fox", "minimum_should_match": "75%" } } } { "bool": { "should": [ { "term": { "title": "brown" }}, { "term": { "title": "fox" }}, { "term": { "title": "quick" }} ], "minimum_should_match": 2 } }

由于只有3個查詢語句,minimum_should_match的值75%會被向下舍入到2。即最少兩個should語句需要匹配。

固然,我們可以通過match查詢來編寫這類查詢,但是理解match查詢的內部工作原理能夠讓你根據需要來控制該進程。有些行動沒法通過1個match查詢完成,比如對部份查詢詞條給予更多的權重。在下1節中我們會看到1個例子。



提升查詢子句(Boosting Query Clause)

固然,bool查詢其實不是只能合并簡單的單詞(One-word)match查詢。它能夠合并任何其它的查詢,包括其它的bool查詢。它通常被用來通過合并數個單獨的查詢的分值來調優每份文檔的相干度_score

假定我們需要搜索和"full-text search"相干的文檔,但是我們想要給予那些提到了"Elasticsearch"或"Lucene"的文檔更多權重。更多權重的意思是,對提到了"Elasticsearch"或"Lucene"的文檔,它們的相干度_score會更高,即它們會出現在結果列表的前面。

1個簡單的bool查詢能夠讓我們表達較為復雜的邏輯:

GET /_search { "query": { "bool": { "must": { "match": { "content": { "query": "full text search", "operator": "and" } } }, "should": [ { "match": { "content": "Elasticsearch" }}, { "match": { "content": "Lucene" }} ] } } }
  1. content字段必須含有full,textsearch這3個詞條
  2. 如果content字段也含有了詞條ElasticsearchLucene,那末該文檔會有1個較高的_score

should查詢子句的匹配數量越多,那末文檔的相干度就越高。目前為止還不錯。

但是如果我們想給含有Lucene的文檔多1些權重,同時給含有Elasticsearch的文檔更多1些權重呢?

我們可以通過指定1個boost值來控制每一個查詢子句的相對權重,該值默許為1。1個大于1boost會增加該查詢子句的相對權重。因此我們可以將上述查詢重寫以下:

GET /_search { "query": { "bool": { "must": { "match": { "content": { "query": "full text search", "operator": "and" } } }, "should": [ { "match": { "content": { "query": "Elasticsearch", "boost": 3 } }}, { "match": { "content": { "query": "Lucene", "boost": 2 } }} ] } } }

NOTE

boost參數被用來增加1個子句的相對權重(當boost大于1時),或減小相對權重(當boost介于01時),但是增加或減小不是線性的。換言之,boost設為2其實不會讓終究的_score加倍。

相反,新的_score會在適用了boost后被歸1化(Normalized)。每種查詢都有自己的歸1化算法(Normalization Algorithm),算法的細節超越了本書的討論范圍。但是能夠說1個高的boost值會產生1個高的_score。

如果你在實現你自己的不基于TF/IDF的相干度分值模型并且你需要對提升進程具有更多的控制,你可使用function_score查詢,它不通過歸1化步驟對文檔的boost進行操作。

在下1章中,我們會介紹其它的用于合并查詢的方法,多字段查詢(Multifield Search)。但是,首先讓我們看看查詢的另外一個重要特定:文本分析(Text Analysis)。


生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 爆操网站 | 免费观看一区 | 亚洲福利专区 | 日韩av中文 | 久久伊人精品视频 | 精品久久国产 | 99热最新| 成年人av网站 | 欧美日韩亚洲三区 | 日韩一区欧美一区 | 久久久久久久国产精品视频 | 精品伦精品一区二区三区视频 | 99久久久国产精品免费调教网站 | 天天操天天草 | 成人看片网 | 成人性生活大片免费看一 | 国产成人一区二区 | 欧美日韩精品一区二区 | 国产精品久久久久免费视频 | 国产午夜亚洲精品理论片色戒 | 日韩欧美一区在线 | 国产精品久久久久一区二区三区共 | 欧美一区二区在线播放 | 中文字幕国产 | 国产精品a久久久久 | 亚洲丁香社区久久丝袜综合网 | 在线观看av资源 | 黄色大片成人 | 日本激情一区二区 | 亚洲成人18 | 国产成人在线视频 | 亚洲精品三级 | 国产三级电影在线观看 | 牛牛视频在线 | 久久久久久九九 | 懂色av影视一区二区三区 | jizz18毛片 | 久久久国产精品 | 51精产品一区一区三区 | 久久精品网址 | 韩国色综合 |