需求很簡單,搜索時,有一個區分大小寫的CheckBox,勾選則區分大小寫,不勾選正常模糊搜索,或者其他搜索
首先搞清楚,ElasticSearch索引英文時默認索引時采用的分析器,會將全部字符轉換為小寫,所以采用默認分析器是無法實現區分大小寫的。
最直接的方法就是自定義分詞器,
{ "analysis": { "analyzer":{ "case_sensitive_analyzer":{ "tokenizer":"standard",
"filter":["stardard","stop"]
} } } }
上述分析器,實際上是將默認的標准分析器中的小寫分詞過濾器去掉。
這樣以來又引入另外一個問題,如果正常的搜索又無法顯示不區分區分大小寫的模糊匹配,
可以再引入一個字段,定義為默認的分詞器,然后,然后根據是否勾選區分大小寫查詢不同的的字段即可。
對於ElasticSearch分析器有疑問的可見:https://www.cnblogs.com/lishaojun/p/11027484.html
