<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 功能強大 支持多語言、二開方便! 廣告
                # Pattern Capture Token Filter(模式匹配詞元過濾器) 原文鏈接 :[https://www.elastic.co/guide/en/elasticsearch/reference/5.4/analysis-pattern-capture-tokenfilter.html](https://www.elastic.co/guide/en/elasticsearch/reference/5.4/analysis-pattern-capture-tokenfilter.html) 譯文鏈接 : [http://www.apache.wiki/pages/viewpage.action?pageId=10028023](http://www.apache.wiki/pages/viewpage.action?pageId=10028023) 貢獻者 : [李亞運](/display/~liyayun),[ApacheCN](/display/~apachecn),[Apache中文網](/display/~apachechina) ## 簡述 `pattern_capture詞元`過濾器與`pattern 分詞器`不同,為正則表達式中的每個捕獲組發出一個token。? ?模式不會錨定到字符串的開始和結尾,每個模式可以匹配多次,并且允許重復匹配。 小心病態正則表達式 模式捕獲令牌過濾器使用[Java正則表達式](http://docs.oracle.com/javase/8/docs/api/java/util/regex/Pattern.html) 。 一個嚴重的正則表達式可能會運行得非常慢,甚至會拋出一個StackOverflowError,并導致其運行的節點突然退出。 閱讀更多[關于病態正則表達式和如何避免它們](http://www.regular-expressions.info/catastrophic.html) 。 ? ## 示例-1 舉例如下: 正則: ``` "(([a-z]+)(\d*))" ``` 待匹配文字: ``` "abc123def456" ``` 匹配結果: ``` [ abc123, abc, 123, def456, def, 456 ] ``` 如果`preserve_original`設置為`true`?(默認值),那么它也會發出原始令牌:?`abc123def456`?。 這對于索引文本(如駝峰式代碼)特別有用,例如`stripHTML`?,用戶可以在其中搜索`"strip html"`或`"striphtml"`?: ``` PUT test { "settings" : { "analysis" : { "filter" : { "code" : { "type" : "pattern_capture", "preserve_original" : true, "patterns" : [ "(\\p{Ll}+|\\p{Lu}\\p{Ll}+|\\p{Lu}+)", "(\\d+)" ] } }, "analyzer" : { "code" : { "tokenizer" : "pattern", "filter" : [ "code", "lowercase" ] } } } } } ``` 當處理如下文本內容時: ``` import static org.apache.commons.lang.StringEscapeUtils.escapeHtml ``` 結果如下: ``` [ import, static, org, apache, commons, lang, stringescapeutils, string, escape, utils, escapehtml, escape, html ] ``` ## 示例-2 別一個例子就是分析郵箱時,如下所示: ``` PUT test { "settings" : { "analysis" : { "filter" : { "email" : { "type" : "pattern_capture", "preserve_original" : true, "patterns" : [ "([^@]+)", "(\\p{L}+)", "(\\d+)", "@(.+)" ] } }, "analyzer" : { "email" : { "tokenizer" : "uax_url_email", "filter" : [ "email", "lowercase", "unique" ] } } } } } ``` 當郵箱格式如下時: ``` john-smith_123@foo-bar.com ``` 最終處理結果將為: ``` john-smith_123@foo-bar.com, john-smith_123, john, smith, 123, foo-bar.com, foo, bar, com ``` 需要多種模式以允許重復捕獲,但也意味著模式不復雜和易于理解。 注意:所有token都以相同的位置處理,并且具有相同的字符偏移量,因此當與突出顯示相結合時,**整個原始token將被突出顯示,而不僅僅是匹配的子集**。 ??例如,查詢上述電子郵件地址`"smith",`將會突出顯示整個原始token: ``` <em>john-smith_123@foo-bar.com</em> ``` 而非僅高亮smith: ``` john-<em>smith</em>_123@foo-bar.com ```
                  <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>

                              哎呀哎呀视频在线观看