elasticSearch 同义词搜索

关键概念理解
搜索引擎在构建索引和对搜索关键词解析时都有语句分析的过程,lucene中称为analysis。analysis这个过程,又包括两个子过程 tokenizer和filter:tokenizer即大家熟知的分词 ,filter这里的意思可以理解为对分好的词做的相应处理。可以理解为filter被analyzer使用。
es同义词搜索实战
中文分词插件这里选择ik,es选用1.5.0版本。

index:
  analysis:
    filter:
      my_synonym:
        type: synonym
        synonyms_path: analysis/synonym.txt
    analyzer:
      ik:
        alias:
        - ik_analyzer
        type: org.elasticsearch.index.analysis.IkAnalyzerProvider
      ik_smart:
        type: ik
        use_smart: true
      ik_syno:
        type: custom
        tokenizer: ik
        filter: [my_synonym]
      ik_syno_smart:
        type: custom
        tokenizer: ik
        filter: [my_synonym]
        use_smart: true
注意要想同义词搜索生效,相应字段的mappping配置里必须指明相应的searchAnalyzer
curl -XPOST http://localhost:9200/goods_v2/fulltext/_mapping -d'
{
    "fulltext": {
             "_all": {
            "indexAnalyzer": "ik",
            "searchAnalyzer": "ik",
            "term_vector": "no",
            "store": "false"
        },
     "properties": {
        "Fsku_id" :{
          "type": "string"
      },
      "Fproduct_id":{
          "type": "string"
      },
      "Fproduct_name":{
          "type": "string",
          "store": "no",
          "term_vector": "with_positions_offsets",
          "indexAnalyzer": "ik",
          "searchAnalyzer": "ik_syno",
          "include_in_all": "true",
          "boost": 8
      }
     }
    } 

你可能感兴趣的:(搜索引擎)