2017-02-27 67 views
1

我已经从elasticsearch阅读本文件: https://www.elastic.co/guide/en/elasticsearch/reference/1.7/analysis-word-delimiter-tokenfilter.htmlElasticsearch和word_delimiter令牌过滤

,并在相同的是搜索互联网的例子。 不幸的是,不只是有几个例子,其中大多数都不起作用。

我真的很感激,如果有人可以发布或举例说明如何在elasticsearch中使用word_delimeter标记过滤器。

谢谢。

+0

你能告诉我们你想要什么呢? – paqash

+0

你好@paqash,感谢对我的问题感兴趣。 user3775217在下面提供了一个很好的示例,非常有用。但是如果你可以给我一个插入文本** {“name”:“everyone”} **的文档,并且如果搜索字符串“** every **”或“*”,我会很高兴。 * body **“,结果至少是该文件。基本上我想看到弹性搜索功能“** generate_word_parts **”在行动。这里是我之前发布的类似问题:[link](http://stackoverflow.com/questions/42336347/elasticsearch-token-filter-word-delimiter-and-generate-word-parts) –

回答

2

Elasticversion - 5.2

尝试以下映射

PUT demo 
{ 
    "settings": { 
     "analysis": { 
      "analyzer": { 
      "index_analyzer_v1" : { 
       "tokenizer" : "whitespace", 
       "filter" : [ "word_delimeter"] 
      } 
      }, 
      "filter": { 
      "ngram_filter" : { 
       "type" : "nGram", 
       "min_gram": 1, 
      "max_gram": 10, 
      "token_chars": [ 
      "letter", 
      "digit" 
      ] 
      }, 
      "word_delimeter" : { 
       "type" : "word_delimiter", 
       "generate_number_parts" : true, 
       "catenate_words" : true, 
       "catenate_numbers": true, 
       "preserve_original" : true, 
       "stem_english_possessive": true 

      }, 
      "stop_words" : { 
       "type": "stop", 
      "stopwords": ["and", "is", "the", "we", "in", "are", "was", "were", "of"] 
      } 
      } 
     } 
    }, 
    "mappings": { 
      "product": { 
       "dynamic": "strict", 
       "properties": { 
        "name": { 
        "type": "text", 
        "analyzer": "index_analyzer_v1" 
        } 
       } 
      } 
     } 
} 

指数下列文件

POST demo/product 
{ 
    "name":"SH-09" 
} 

运行下面的查询

POST demo/_search 
{ 
    "query": {"bool": {"must": [ 
    {"term": { 
     "name": { 
     "value": "09" 
     } 
    }} 
    ]}} 
} 

Furthur更多,如果你はNT看到存储在倒排索引值,运行以下查询

GET demo/_analyze?analyzer=index_analyzer_v1&text=SH-09 

希望这有助于

+0

非常感谢@ user3775217。您的示例(在1.7.5和5.2.1中)特别适用于您发布的示例文档。但我尝试添加{“name”:“everyone”}并搜索“body”或“every”,但它不起作用。实际上我希望看​​到功能/标志“generate_number_parts”正在运行。但是,所有的好人。我非常感谢你的回答。非常感谢=)! –

+0

我很高兴这为你工作。谢谢 – user3775217