2017-06-12 122 views
0

我有一個html文件,我需要找到圍繞精確匹配字符串的部分,比如說「年度報告PURSUANT」。我正在使用最新版本的Elasticsearch 5.4.0。我是elasticsearch的新手。對於索引我已經定義分析如下:Elasticsearch:需要完全匹配字符串的偏移量

{ 
    "index_name": { 
     "settings": { 
      "index": { 
       "number_of_shards": "5", 
       "provided_name": "index_name", 
       "creation_date": "1496927173220", 
       "analysis": { 
        "analyzer": { 
         "contact_section_analyzer": { 
          "tokenizer": "my_tokenizer" 
         } 
        }, 
        "tokenizer": { 
         "my_tokenizer": { 
          "pattern": "(ANNUAL REPORT PURSUANT)", 
          "type": "pattern", 
          "group": "1" 
         } 
        } 
       }, 
       "number_of_replicas": "1", 
       "uuid": "vF3cAe-STJW-GrVxc7N8ww", 
       "version": { 
        "created": "5040099" 
       } 
      } 
     } 
    } 
} 

現在我試圖讓偏移使用如下分析:

POST localhost:9200/sag_sec_items6/_analyze?pretty 
{ 
    "analyzer": "contact_section_analyzer", 
    "text": "my_html_file_contents_already_indexed" 
} 

它返回:

{ 
    "tokens": [] 
} 

我檢查的HTML文件,之後包含該文本。

使用_search查詢個人_ids我得到整個HTML文件回來。 如何獲得偏移量或包含該文本的html標記

回答

0

我重新定義爲我下面的分析儀設置:

"settings": { 
     "analysis": { 
     "analyzer": { 
     "contact_section_start_analyzer": { 
       "char_filter": "html_strip", 
       "tokenizer": "contact_section_start_tokenizer" 
     } 
     }, 
     "tokenizer": { 
     "contact_section_start_tokenizer": { 
       "flags": "CASE_INSENSITIVE|DOTALL", 
       "pattern": "\\b(annual\\s+report\\s+pursuant)\\b", 
       "type": "pattern", 
       "group": "1" 
     } 
     } 
     } 
     } 

隨着這一變化在正則表達式模式和包括CASE_INSENSITIVE |在圖案分析器DOTALL標誌,我能得到補償。