全文檢索搜尋-介紹-elasticsearch-definitive-guide翻譯

來源:互聯網
上載者:User

標籤:部落格   elasticsearch   翻譯   

全文檢索搜尋我們通過前文的簡單例子,已經瞭解了結構化資料的條件搜尋;現在,讓我們來瞭解全文檢索搜尋-- 怎樣通過匹配所有域的文本找到最相關的文章。關於全文檢索搜尋有兩個最重要的方面:
相似度計算
通過TF/IDF (see [relevance-intro]),地理位置接近演算法,模糊相似度演算法或者其他演算法,用來給給定查詢條件的結果排序。
文本分析
通過把文本切割和歸一化後的詞元,去(a)產生倒排索引,或者去(b)查詢倒排索引。
當我們在討論相似度計算和文本分析的時候,我們只是在討論查詢,而不是過濾詞條搜尋 vs. 全文檢索搜尋即使所有的查詢都要執行一些相似度排序,但是不是所有的查詢條件都需要文本分析。 因為有些特殊的查詢就不是在文本上執行的,列如 boolfunction_score。 它們是boolean查詢和數值查詢。文字查詢可以分為兩個種類:
詞條查詢
低層級的 termfuzzy查詢沒有文本分析,它們只是在單個詞條上查詢。列如詞條 "Foo"term查詢, 是在倒排索引種尋找完全符合的詞條,然後給每一篇包含這個詞條的文章做TF/IDF相似度打分。記住:詞條 "Foo"term查詢只是在倒排索引裡尋找完全符合的詞條,它不會匹配到 "foo"或者 "FOO"。 當你在 not_analyzed的域用 ["Foo","Bar"]產生索引,或者在用 whitespace分析器的域用 "Foo Bar"產生索引, 它們都會在倒排索引裡產生兩個詞元 "Foo""Bar"
全文檢索查詢
進階別的 matchquery_string查詢能夠理解這些域的映射: * 如果在 dateinteger屬性的域,查詢文本會被當日期或者整數來對待。 * 如果在( not_analyzed)屬性的文本域,查詢文本會被當做一個詞條來查詢。 * 但是,如果在( analyzed)屬性的文本域,查詢文本會用恰當得分析器去產生詞條,而這些詞條都會被用來查詢。 一旦查詢得到這些詞條,它就用適當的低級查詢去執行每一個詞條,然後用查詢結果計算每一篇文章的相似度打分。 我們將在後面的章節中詳細介紹這個過程。
通常,你幾乎都不會直接用到基於詞元的查詢,更多的,你會用更方便的進階全文檢索查詢(其實內部是用基於詞元的查詢)當你想在 not_analyzed域查詢完全符合值的時候,你應該考慮一下你到底是用查詢還是過濾。 因為單詞條查詢通常被表示為二元值 yes| no,所以過濾能更好的表達它們。你能從這裡收益的 filter caching:
GET /_search{    "query": {        "filtered": {            "filter": {                "term": { "gender": "female" }            }        }    }}

部落格已搬家

原文連結:http://www.callmer.com/?p=43

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.