elasticsearch,lowercase,synonym,Jdbc,elasticsearch,Lowercase,Synonym" /> elasticsearch,lowercase,synonym,Jdbc,elasticsearch,Lowercase,Synonym" />

Jdbc Elasticsearch同义词区分大小写的结果

Jdbc Elasticsearch同义词区分大小写的结果,jdbc,elasticsearch,lowercase,synonym,Jdbc,elasticsearch,Lowercase,Synonym,谁能告诉我我做错了什么。 我正试图用这种方式设置elasticsearch { "settings" : { "index" : { "analysis" : { "analyzer" : { "synonym" : { "type" : "custom", "tokenizer"

谁能告诉我我做错了什么。 我正试图用这种方式设置elasticsearch

{
    "settings" : {
        "index" : {
            "analysis" : {
                "analyzer" : {
                    "synonym" : {
                        "type" : "custom",
                        "tokenizer" : "whitespace",
                        "filter" : ["en_US", "lowercase", "synonym"]
                    }
                },
                "filter" : {
                    "synonym" : {
                        "type" : "synonym",
                        "synonyms_path" : "analysis/synonym.txt"
                    },
                    "en_US" : {
                        "type" : "hunspell",
                        "locale" : "en_US",
                        "dedup" : true
                    }
                }
            }
        }
    },
    "mappings" : {
        "jdbc" : {
            "properties" : {
                "Title" : {
                    "type" : "string",
                    "search_analyzer" : "synonym",
                    "index_analyzer" : "standard"
                },
                "Abstract" : {
                    "type" : "string",
                    "search_analyzer" : "synonym",
                    "index_analyzer" : "standard"
                }
            }
        }
    }
}
我的synonym.txt文件包含

beer, ale, lager, cark ale
Lithuania, Republic of Lithuania, Lithuanian
因此,现在是试用我的分析仪的时候了:

http://localhost:9200/jdbc/_analyze?text=beer&analyzer=synonym&pretty=true
它按预期工作并返回给我

{
  "tokens" : [ {
    "token" : "beer",
    "start_offset" : 0,
    "end_offset" : 4,
    "type" : "SYNONYM",
    "position" : 1
  }, {
    "token" : "ale",
    "start_offset" : 0,
    "end_offset" : 4,
    "type" : "SYNONYM",
    "position" : 1
  }, {
    "token" : "lager",
    "start_offset" : 0,
    "end_offset" : 4,
    "type" : "SYNONYM",
    "position" : 1
  }, {
    "token" : "cark",
    "start_offset" : 0,
    "end_offset" : 4,
    "type" : "SYNONYM",
    "position" : 1
  }, {
    "token" : "ale",
    "start_offset" : 0,
    "end_offset" : 4,
    "type" : "SYNONYM",
    "position" : 1
  } ]
}
然而,质疑这一点:

http://localhost:9200/jdbc/_analyze?text=Lithuanian&analyzer=synonym&pretty=true
将只返回:

{
  "tokens" : [ {
    "token" : "lithuanian",
    "start_offset" : 0,
    "end_offset" : 10,
    "type" : "word",
    "position" : 1
  } ]
}

任何提示?

在分析过程中,令牌筛选器将按指定的顺序应用。 因此,在上述情况下,“立陶宛”首先转换为小写的“立陶宛”。 由于同义词文件不包含此案例版本的标记,因此不会发生同义词转换。 中的本节将详细介绍这一点

根据用例的不同,有两种方法可以实现这一点:将自定义分析器中令牌过滤器的顺序更改为:

  "synonym" : {
         "type" : "custom",
         "tokenizer" : "whitespace",
          "filter" : ["en_US", "synonym","lowercase"]
   }
上述内容仍然区分大小写,但转换将与上述内容一致 同义词.txt

或者,您可以将analysis/synonym.txt中的所有同义词设置为小写,并保持问题中指定的相同分析器设置。 例如:


这可能是我实际做的事情的重复。使每一个同义词都小写是最简单、快捷的解决方案。谢谢请记住,这会造成与CAT(医学扫描)和CAT(动物)等词的不匹配。
  beer, ale, lager, cark ale
  lithuania, republic of lithuania, lithuanian