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

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                # Phrase Suggester 原文鏈接 : [https://www.elastic.co/guide/en/elasticsearch/reference/5.0/search-suggesters-phrase.html](https://www.elastic.co/guide/en/elasticsearch/reference/5.0/search-suggesters-phrase.html) 譯文鏈接 :[http://www.apache.wiki/display/Elasticsearch/Phrase+Suggester](http://www.apache.wiki/display/Elasticsearch/Phrase+Suggester) 貢獻者 : @Josh 為了理解 **suggestion** 的形式,請先閱讀 **suggesters** 第一頁。 術語 **suggester** 提供了一種非常方便的 API ,以在某個字符串距離內在每個 **token** 的基礎上訪問字替換。 API 允許單獨訪問流中的每個 **token** ,而 **suggest**?選擇由API使用者選擇。 然而,通常需要預先選擇的 **suggestions** 以呈現給最終用戶。 短語 **suggester** 在 **term**?**suggester** 之上添加額外的邏輯以選擇整個經校正的短語,而不是基于 **ngram-language** 模型加權的單個 **token** 。 在實踐中,這個 **suggester** 將能夠基于共現和頻率來做出關于選擇哪些 **token** 的更好的決定。 API 示例 一般來說,**phrase**?**suggester**? 需要前面的特殊映射。 此頁面上的 **phrase**?**suggester** 示例需要以下映射才能正常工作。 僅在最后一個示例中使用反向(**reverse**)分析器。 ``` PUT test { "settings": { "index": { "number_of_shards": 1, "analysis": { "analyzer": { "trigram": { "type": "custom", "tokenizer": "standard", "filter": ["standard", "shingle"] }, "reverse": { "type": "custom", "tokenizer": "standard", "filter": ["standard", "reverse"] } }, "filter": { "shingle": { "type": "shingle", "min_shingle_size": 2, "max_shingle_size": 3 } } } } }, "mappings": { "test": { "properties": { "title": { "type": "text", "fields": { "trigram": { "type": "text", "analyzer": "trigram" }, "reverse": { "type": "text", "analyzer": "reverse" } } } } } } } POST test/test?refresh=true {"title": "noble warriors"} POST test/test?refresh=true {"title": "nobel prize"} ``` 一旦你設置了分析器和映射,你可以在同一個地方使用 **phrase** **suggester**,你可以使用 **term suggester** : ``` POST _suggest { "text": "noble prize", "simple_phrase": { "phrase": { "field": "title.trigram", "size": 1, "gram_size": 3, "direct_generator": [ { "field": "title.trigram", "suggest_mode": "always" } ], "highlight": { "pre_tag": "<em>", "post_tag": "</em>" } } } } ``` 該響應包含由最可能的拼寫糾正評分的?**suggestions**?。 在這種情況下,我們收到了預期的校正“諾貝爾獎”。 ``` { "_shards": ... "simple_phrase" : [ { "text" : "noble prize", "offset" : 0, "length" : 11, "options" : [ { "text" : "nobel prize", "highlighted": "<em>nobel</em> prize", "score" : 0.5962314 }] } ] } ``` ## 基本短語 suggest API 參數 | **field** | 用于對語言模型進行n元語法查找的字段的名稱, **suggester** 將使用此字段獲取統計信息以對校正進行評分。 此字段是必填字段。 | | **gram_size** | 在字段中設置 n-**gram**(**shingles**)的最大大小。 如果字段不包含 **n-gram**(**shingles**),則應省略或設置為1.請注意,**Elasticsearch** 嘗試根據指定的字段檢測克大小。 如果字段使用 **shingle** 過濾器,則如果未明確設置,則將**gram_size** 設置為 **max_shingle_size**。 | | **real_word_error_likelihood** | 即使詞語存在于字典中,詞語是拼寫錯誤的可能性。 默認是0.95對應5%的真實單詞拼寫錯誤。 | | **confidence** | 置信水平定義了應用于輸入短語分數的因子,其被用作其他 **suggest** 候選的閾值。 只有得分高于閾值的候選人才會包括在結果中。 例如,1.0的置信水平將僅返回得分高于輸入短語的 **suggestions** 。 如果設置為0.0,則返回前N個候選。 默認值為1.0。 | | **max_errors** | 為了形成校正,最多被認為是拼寫錯誤的術語的最大百分比。 此方法接受范圍[0..1]中的浮點值作為實際查詢項的分數或作為查詢項的絕對數量的數字&gt; = 1。 默認值設置為1.0,對應于只返回最多1個拼寫錯誤項的更正。 請注意,將其設置過高可能會對性能產生負面影響。 推薦使用低值,例如1或2,否則 **suggestions** 調用的時間花費可能超過查詢執行的時間花費。 | | **separator** | 用于分隔 **bigram** 字段中的術語的分隔符。 如果未設置,則使用空格字符作為分隔符 | | **size** | 為每個單獨查詢項生成的候選數量低數字(如3或5)通常會產生良好的結果。 提高這個可以帶來更高的編輯距離的術語。 默認值為5。 | | **analyzer** | 將分析器設置為分析以使用 **suggest** 文本。 默認為通過字段傳遞的 **suggest** 字段的搜索分析器。 | | **shard_size** | 設置要從每個單獨的分片檢索的 **suggestions** 字詞的最大數量。 在減少階段期間,基于size選項只返回前N個 **suggestions** 。 默認為5。 | | **text** | 設置文本/查詢以提供 **suggestions** 。 | | **highlight** | 設置 **suggestion** 高亮顯示。 如果未提供,則不返回高亮顯示的字段。 如果提供,必須包含完全pre_tag和post_tag包裹改變的標記。 如果一行中的多個標記被改變,則改變的標記的整個短語被包裝,而不是每個標記。 | | **collate** | 檢查針對指定查詢的每個 **suggestion** ,以修剪索引中沒有匹配的文檔的 **suggestions** 。 對于 **suggestion** 的整理查詢僅在從中生成 **suggestion** 的本地碎片上運行。 必須指定查詢,并將其作為[模板查詢](https://www.elastic.co/guide/en/elasticsearch/reference/5.0/query-dsl-template-query.html)運行。 當前 **suggestion** 自動提供為 **{{suggestion}}}** 變量,應在您的查詢中使用。 您仍然可以指定自己的模板 **params-suggestions** 值將添加到您指定的變量。 此外,您可以指定一個 **prune** 以控制是否返回所有短語 **suggestions** ,設置為 true時, **suggestions** 將有一個附加選項 **collate_match**,如果找到匹配的短語文檔,則為true,否則為false。 **prune** 的默認值為false。 | ``` POST _suggest { "text" : "noble prize", "simple_phrase" : { "phrase" : { "field" : "title.trigram", "size" : 1, "direct_generator" : [ { "field" : "title.trigram", "suggest_mode" : "always", "min_word_length" : 1 } ], "collate": { "query": { ① "inline" : { "match": { "{{field_name}}" : "{{suggestion}}" ② } } }, "params": {"field_name" : "title"}, ③ "prune": true ④ } } } } ``` ① 所有這三個元素都是可選的。 ②?**{{suggestion}}** 變量將會被每個 **suggestion** 文本所代替。 ③ 額外的?**field_name** 變量已經在 **params** 中被指定,并且被 **match** 查詢所使用。 ④ ?所有的 **suggestions** 將和一個額外的 **collate_match** 選項一起返回,表示是否生成的短語匹配任何文檔。 field_name ## 平滑(**smothing**)模型 短語 **suggester** 支持多個平滑模型來平衡重量不頻繁 **grams**(**grams**(瓦)不存在于索引中)和頻繁 **grams**(在索引中至少出現一次)。 | **stupid_backoff** | 簡單的回退模型,如果高階計數為0并且通過常數因子折扣低階n-gram模型,則回退到低階n-gram模型。 默認折扣為0.4。 Stupid Backoff是默認模型。 | | **laplace** | 使用添加平滑的平滑模型,其中將常數(通常為1.0或更小)添加到所有計數以平衡權重。默認α為0.5。 | | **linear_interpolation** | 平滑模型,其基于用戶提供的權重(**lambdas**)獲取單字組,雙字組和三字母組的加權平均值。 線性插值沒有任何默認值。 必須提供所有參數(trigram_lambda,bigram_lambda,unigram_lambda)。 | ## 候選生成器(?**Generators)** 短語 **suggester** 使用候選生成器來產生給定文本中每個術語的可能術語的列表。 單個候選生成器類似于對文本中的每個單獨術語調用的術語 **suggester**?。?生成器的輸出隨后與來自其他項的候選一起被評分以用于 **suggestions** 候選。 目前只支持一種類型的候選生成器,**direct_generator**。 Phrase **suggestions** API接受在關鍵 **direct_generator** 下的生成器列表,列表中的每個生成器在原始文本中被稱為每個term。 ## 直接生成器(Generators) 直接生成器支持以下參數: | **field** | 從中獲取候選 **suggestions** 的字段。 這是必需的選項,需要設置全局或每個 suggestion 。 | | **size** | 每個 **suggestion** 文本標記返回的最大更正值。 | | **suggest_mode** | **suggest** 模式控制在每個分片上生成的 **suggestions** 中包括哪些 **suggestions** 。 除了always之外的所有值都可以被認為是優化以生成更少的 suggestions 以在每個碎片上測試,并且在組合在每個碎片上生成的 **suggestions** 時不被重新檢查。 因此,對于不包含它們的分片,即使其他分片包含它們,也會生成對分片的 **suggestions** 。 這些應該使用信心過濾掉。 可以指定三個可能的值: * missing: 僅生成不在f中的術語的 **suggestions** 。 這是默認值。 * popular: 只 **suggest** 在 shard 的更多文檔中出現的術語,而不是原始術語 * always:根據 **suggestions** 文字中的字詞 **suggest** 任何相符的 **suggestions** 。 | | **max_edits** | 最大編輯距離候選 **suggestions** 可以具有,以便被認為是 **suggestion** 。 只能是介于1和2之間的值。任何其他值都會導致拋出錯誤的請求錯誤。 默認為2。 | | **prefix_length** | 必須匹配的最小前綴字符的數量是候選 **suggestions** 。 默認值為1.增加此數字可提高拼寫檢查性能。 通常拼寫錯誤不會出現在術語的開頭。 (舊名稱“**prefix_len**”已棄用) | | **min_word_length** | **suggest** 文本術語必須包含的最小長度。 默認值為4.(舊名稱“**min_word_len**”已棄用) | | **max_inspections** | 用于乘以 **shards_size** 以便在碎片級別上檢查更多候選拼寫校正的因子。 可以以性能為代價提高精度。 默認為5。 | | **min_doc_freq** | **suggestion** 應該出現的文檔數量的最小閾值。這可以指定為絕對數字或文檔數量的相對百分比。 這可以通過僅提示高頻項來提高質量。 默認值為0f,未啟用。 如果指定的值大于1,則該數字不能為小數。 分片級文檔頻率用于此選項。 | | **max_term_freq** | **suggestion** 文本標記可以存在的文檔數量中的最大閾值,以便包括。 可以是表示文檔頻率的相對百分比數字(例如0.4)或絕對數字。 如果指定的值大于1,則不能指定小數。 默認為0.01f。 這可以用于排除高頻術語的拼寫檢查。 高頻項通常拼寫正確,這也提高了拼寫檢查的性能。 分片級文檔頻率用于此選項。 | | **pre_filter** | 應用于傳遞到該候選生成器的每個令牌的過濾器(分析器)。 在生成候選項之前,此過濾器應用于原始令牌。 | | **post_filter** | 在它們被傳遞給實際短語記分器之前應用于每個生成的令牌的過濾器(分析器)。 | 他下面的例子顯示了一個短語 **suggest**?用兩個生成器調用,第一個使用包含普通索引術語的字段,第二個使用使用索引與反向過濾器的術語的字段(令牌是相反順序的索引)。 這用于克服直接發電機的限制,需要恒定的前綴來提供高性能 **suggestions** 。 pre_filter 和 post_filter 選項接受普通分析器名稱。 ``` POST _suggest { "text" : "obel prize", "simple_phrase" : { "phrase" : { "field" : "title.trigram", "size" : 1, "direct_generator" : [ { "field" : "title.trigram", "suggest_mode" : "always" }, { "field" : "title.reverse", "suggest_mode" : "always", "pre_filter" : "reverse", "post_filter" : "reverse" } ] } } } ``` ?**pre_filter** 和 **post_filter** 也可以用于在生成候選項之后注入同義詞。 例如,對于查詢 **caption usq**,我們可以為項usq生成候選 usa,這是 america 的同義詞,其允許如果該短語得分足夠高則向用戶呈現 **captain america。**
                  <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>

                              哎呀哎呀视频在线观看