ElasticSearch n-gram tokenfilter not finding partial words

前端 未结 2 828
小蘑菇
小蘑菇 2021-02-08 16:58

I have been playing around with ElasticSearch for a new project of mine. I have set the default analyzers to use the ngram tokenfilter. This is my elasticsearch.yml file:

<
2条回答
  •  失恋的感觉
    2021-02-08 17:14

    Not sure about the default_* settings. But applying a mapping that specifies index_analyzer and search_analyzer works:

    curl -XDELETE localhost:9200/twitter
    curl -XPOST localhost:9200/twitter -d '
    {"index": 
      { "number_of_shards": 1,
        "analysis": {
           "filter": {
                      "mynGram" : {"type": "nGram", "min_gram": 2, "max_gram": 10}
                     },
           "analyzer": { "a1" : {
                        "type":"custom",
                        "tokenizer": "standard",
                        "filter": ["lowercase", "mynGram"]
                        }
                      } 
         }
      }
    }
    }'
    
    curl -XPUT localhost:9200/twitter/tweet/_mapping -d '{
        "tweet" : {
            "index_analyzer" : "a1",
            "search_analyzer" : "standard", 
            "date_formats" : ["yyyy-MM-dd", "dd-MM-yyyy"],
            "properties" : {
                "user": {"type":"string", "analyzer":"standard"},
                "message" : {"type" : "string" }
            }
        }}'
    
    curl -XPUT 'http://localhost:9200/twitter/tweet/1' -d '{
        "user" : "kimchy",
        "post_date" : "2009-11-15T14:12:12",
        "message" : "trying out Elastic Search"
    }'
    
    curl -XGET localhost:9200/twitter/_search?q=ear
    curl -XGET localhost:9200/twitter/_search?q=sea
    
    curl -XGET localhost:9200/twitter/_mapping
    

提交回复
热议问题