<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>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                # 高級文本評分腳本 原文鏈接 : [https://www.elastic.co/guide/en/elasticsearch/reference/current/modules-advanced-scripting.html](https://www.elastic.co/guide/en/elasticsearch/reference/current/modules-advanced-scripting.html) 譯文鏈接 : [http://www.apache.wiki/pages/viewpage.action?pageId=9405381](http://www.apache.wiki/pages/viewpage.action?pageId=9405381) 貢獻者 : [阿叩](/display/~luanqing),[ApacheCN](/display/~apachecn),[Apache中文網](/display/~apachechina) MarkDown文件:[Advanced text scoring in scripts.md](https://github.com/aqlu/elasticsearch-reference-cn/blob/master/Modules/Scripting/Advanced_text_scoring_in_scripts.md) ## 高級文本評分腳本 警告 本頁面上所描述的功能被認為是實驗性的、并且在未來的版本可被修改或刪除 文本特征,譬如在腳本中通過訪問`_index`變量來獲取某一個指定詞條的詞頻或文檔頻率。 它有可能被用在像這樣的場景中,你想通過一個腳本在[function_core查詢](https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-function-score-query.html)中來實現一個自己的評分模塊。在每個分片中統計文檔集合,而不是每個索引。 ## 名詞解釋 | df | 文檔頻率。詞條在多少個文檔中出現。按文檔的每個字段計算。 | | tf | 詞頻。詞條在指定的文檔中出現的次數。 | | ttf | 總詞頻。詞條出現在所有文檔中的次數,也就是`tf`在所有文檔中的和。按文檔的每個字段計算。 | `df`和`ttf`按每個分片計算,因此這些數字會跟隨分片中的當前文檔一起變化。 ## 分片統計 _index.numDocs() ??_分片中文檔數_ _index.maxDoc() ??_分片中最高的文檔數_ _index.numDeletedDocs() ??_分片中刪除的文檔數_ ## 字段統計 字段統計可以通過下標運算這樣訪問:`_index['FIELD']`. _index['FIELD'].docCount() ??_含有?**FIELD**?字段的文檔數。不包含已刪除的文檔。_ _index['FIELD'].sumttf() ??_?**FIELD**?字段的所有詞條的詞頻總和。_ _index['FIELD'].sumdf() ??_?**FIELD**?字段的所有詞條的文檔頻率和_ 字段統計按每個分片計算,因此這些數字會跟隨分片中的當前文檔一起變化。在一個字段中詞條的數量不能通過`_index`變量訪問,請參考[Token count datatype](https://www.elastic.co/guide/en/elasticsearch/reference/current/token-count.html)章節解決。 ## 詞條統計 一個字段的詞條統計可以通過下標運算這樣訪問:`_index['FIELD']['TERM']`。這將永遠不會返回`null`,即使詞條或字段不存在。如果你不需要詞頻,調用`_index['FIELD'].get('TERM', 0)`?避免不必要的頻率計算。該標志將只影響你的文檔設置[index_options](https://www.elastic.co/guide/en/elasticsearch/reference/current/index-options.html)。 _index['FIELD']['TERM'].df() ??_?**FIELD**字段中**TERM**詞條的文檔頻率。即使詞條不存在文檔中不存在也會有返回_ _index['FIELD']['TERM'].ttf() ??_?**FIELD**字段中_*TERM__詞條的總詞頻。即使詞條不存在文檔中不存在也會有返回。 _index['FIELD']['TERM'].tf() ??_?**FIELD**字段中_*TERM__詞條的詞頻。如果詞條不存在于文檔中,將返回0。 ## 詞條位置(positions),偏移(offsets)和有效載荷(payloads) 如果您需要獲取一個詞條在字段中的位置信息,可以調用`_index['FIELD'].get('TERM', flag)`來獲取,`flag`可以是如下取值: | _POSITIONS | 如果你需要這個詞條的位置 | | _OFFSETS | 如果你需要這個詞條的偏移 | | _PAYLOADS | 如果你需要這個詞條的有效載荷 | | _CACHE | 如果你需要遍歷所有位置好幾次 | 迭代器使用底層的Lucene類遍歷位置。出于效率的考慮,您只能遍歷一次位置信息。如果您需要反復獲取位置信息,可以設置`_CACHE`標志。 如果你需要獲取多個信息,你可以用使用運算符`|`。例如,以下將返回一個對象的位置和有效載荷,以及所有的統計數據: ``` _index['FIELD'].get('TERM', _POSITIONS | _PAYLOADS) ``` 可以遍歷返回的集合,通過一個`POS_OBJECT`對象來獲取每個詞條的位置、偏移量、有效載荷信息。 POS_OBJECT.position ??_詞條的位置。_ POS_OBJECT.startOffset ??_詞條開始的偏移量。_ POS_OBJECT.endOffset ??_詞條結束的偏移量。_ POS_OBJECT.payload ??_詞條的有效載荷。_ POS_OBJECT.payloadAsInt(missingValue) ??_轉換為整數的詞條有效載荷。如果當前位置沒有有效載荷時,**missingValue**將被返回。只能在你明確知道有效載荷為整數類型時才能調用此方法。_ POS_OBJECT.payloadAsFloat(missingValue) ??_轉換為浮點數的詞條有效載荷。如果當前位置沒有有效載荷時,**missingValue**將被返回。只能在你明確知道有效載荷為浮點類型時才能調用此方法。_ POS_OBJECT.payloadAsString() ??_轉換成字符串的詞條有效載荷。如果當前位置沒有有效載荷,`null`將被退回。只能在你明確知道有效載荷為字符串類型時才能調用此方法。_ 例如,獲取詞條`foo`的有效載荷的總數: ``` termInfo = _index['my_field'].get('foo',_PAYLOADS); score = 0; for (pos in termInfo) { score = score + pos.payloadAsInt(0); } return score; ``` ## 詞條向量: `_index`變量只能被用于收集單一詞條的統計數據。如果您想獲取整個字段的所有詞條信息,您必須先保存詞條向量(參見[term_vector](https://www.elastic.co/guide/en/elasticsearch/reference/current/term-vector.html))。要訪問它們,請調用`_index.termVectors()`得到[字段](https://lucene.apache.org/core/4_0_0/core/org/apache/lucene/index/Fields.html)實例, 你可以參見[lucene文檔](https://lucene.apache.org/core/4_0_0/core/org/apache/lucene/index/Fields.html)來遍歷這個集合,來獲取每個詞條在字段中的信息。如果詞條向量沒有被存儲此方法將返回null。
                  <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>

                              哎呀哎呀视频在线观看