<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                ## 相關性排序 默認情況下,結果集會按照相關性進行排序 -- 相關性越高,排名越靠前。 這一章我們會講述相關性是什么以及它是如何計算的。 在此之前,我們先看一下`sort`參數的使用方法。 ## 排序方式 為了使結果可以按照相關性進行排序,我們需要一個相關性的值。在ElasticSearch的查詢結果中, 相關性分值會用`_score`字段來給出一個浮點型的數值,所以默認情況下,結果集以`_score`進行倒序排列。 有時,即便如此,你還是沒有一個有意義的相關性分值。比如,以下語句返回所有tweets中 `user_id` 是否 包含值 `1`: ```Javascript GET /_search { "query" : { "filtered" : { "filter" : { "term" : { "user_id" : 1 } } } } } ``` 過濾語句與 `_score` 沒有關系,但是有隱含的查詢條件 `match_all` 為所有的文檔的 `_score` 設值為 `1`。 也就相當于所有的文檔相關性是相同的。 ## 字段值排序 下面例子中,對結果集按照時間排序,這也是最常見的情形,將最新的文檔排列靠前。 我們使用 `sort` 參數進行排序: ```Javascript GET /_search { "query" : { "filtered" : { "filter" : { "term" : { "user_id" : 1 }} } }, "sort": { "date": { "order": "desc" }} } ``` 你會發現這里有兩個不同點: ```Javascript "hits" : { "total" : 6, "max_score" : null, <1> "hits" : [ { "_index" : "us", "_type" : "tweet", "_id" : "14", "_score" : null, <1> "_source" : { "date": "2014-09-24", ... }, "sort" : [ 1411516800000 ] <2> }, ... } ``` <1> `_score` 字段沒有經過計算,因為它沒有用作排序。 <2> `date` 字段被轉為毫秒當作排序依據。 首先,在每個結果中增加了一個 `sort` 字段,它所包含的值是用來排序的。 在這個例子當中 `date` 字段在內部被轉為毫秒,即長整型數字`1411516800000`等同于日期字符串 `2014-09-24 00:00:00 UTC`。 其次就是 `_score` 和 `max_score` 字段都為 `null`。計算 `_score` 是比較消耗性能的, 而且通常主要用作排序 -- 我們不是用相關性進行排序的時候,就不需要統計其相關性。 如果你想強制計算其相關性,可以設置`track_scores`為 `true`。 ## 默認排序 **** 作為縮寫,你可以只指定要排序的字段名稱: ```Javascript "sort": "number_of_children" ``` 字段值默認以順序排列,而 `_score` 默認以倒序排列。 **** ## 多級排序 如果我們想要合并一個查詢語句,并且展示所有匹配的結果集使用第一排序是`date`,第二排序是 `_score`: ```Javascript GET /_search { "query" : { "filtered" : { "query": { "match": { "tweet": "manage text search" }}, "filter" : { "term" : { "user_id" : 2 }} } }, "sort": [ { "date": { "order": "desc" }}, { "_score": { "order": "desc" }} ] } ``` 排序是很重要的。結果集會先用第一排序字段來排序,當用用作第一字段排序的值相同的時候, 然后再用第二字段對第一排序值相同的文檔進行排序,以此類推。 多級排序不需要包含 `_score` -- 你可以使用幾個不同的字段,如位置距離或者自定義數值。 ## 字符串參數排序 **** 字符查詢也支持自定義排序,在查詢字符串使用`sort`參數就可以: ```Javascript GET /_search?sort=date:desc&sort=_score&q=search ``` **** ## 為多值字段排序 在為一個字段的多個值進行排序的時候, 其實這些值本來是沒有固定的排序的-- 一個擁有多值的字段就是一個集合, 你準備以哪一個作為排序依據呢? 對于數字和日期,你可以從多個值中取出一個來進行排序,你可以使用`min`, `max`, `avg` 或 `sum`這些模式。 比說你可以在 `dates` 字段中用最早的日期來進行排序: ```Javascript "sort": { "dates": { "order": "asc", "mode": "min" } } ```
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看