Elastic-Language analyzer
2021/9/3 6:06:37
本文主要是介绍Elastic-Language analyzer,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
Language analyzer
支持如下语种:
-
arabic, 美 /ˈærəbɪk/ 阿拉伯语
-
armenian, 美 /ɑːrˈmiːniən/ 亚美尼亚语
-
basque, 美 /bæsk,bɑːsk/ 巴斯克语
-
bengali, 美 /beŋˈɡɑːli/ 孟加拉语
-
brazilian, 美 /brəˈzɪliən/ 巴西语
-
bulgarian, 美 /bʌlˈɡeriən/ 保加利亚语
-
catalan, 美 /ˈkætəlæn/ 加泰罗尼亚语
-
cjk, 中日韩统一表意文字
-
czech, 美 /tʃek/ 捷克语
-
danish, 美 /ˈdeɪnɪʃ/ 丹麦语
-
dutch, 美 /dʌtʃ/ 荷兰语
-
english, 美 /ˈɪŋɡlɪʃ/ 英语
-
estonian, 美 /eˈstoʊniən/ 爱沙尼亚语
-
finnish, 美 /ˈfɪnɪʃ/ 芬兰语
-
french, 美 /frentʃ/ 法语
-
galician, 美 /ɡəˈlɪʃn/ 加里西亚语
-
german, 美 /ˈdʒɜːrmən/ 德语
-
greek, 美 /ɡriːk/ 希腊语
-
hindi, 美 /ˈhɪndi/ 北印度语
-
hungarian, 美 /hʌŋˈɡeriən/ 匈牙利语
-
indonesian, 美 /ˌɪndəˈniːʒn/ 印度尼西亚语
-
irish, 美 /ˈaɪrɪʃ/ 爱尔兰语
-
italian, 美 /ɪˈtæliən/ 意大利语
-
latvian, 美 /ˈlætviən/ 拉脱维亚语
-
lithuanian, 美 /ˌlɪθuˈeɪniən/ 立陶宛语
-
norwegian, 美 /nɔːrˈwiːdʒən/ 挪威语
-
persian, /'pɜːrʒən/ 波斯语
-
portuguese, 美 /ˌpɔːrtʃʊˈɡiːz/ 葡萄牙语
-
romanian, 美 /ro'menɪən/ 罗马尼亚语
-
russian, 美 /ˈrʌʃn/ 俄语
-
sorani, 索拉尼语
-
spanish, 美 /ˈspænɪʃ/ 西班牙语
-
swedish, 美 /ˈswiːdɪʃ/ 瑞典语
-
turkish, 美 /ˈtɜːrkɪʃ/ 土耳其语
-
thai. 美 /taɪ/ 泰语
重新实现语言分词器
这个内置语言分词器可以作为自定义分词器去实现,为了定制它们的行为。
NOTE
如果你不打算排除被提取词干的单词(相当于上面的stem_exclusion参数),那么你应该从自定义分析器配置中删除keyword_marker标记过滤器。
词干提取排除
例如一个句子World Health Organization,这个跟分词替换为organ health 的结果。这是因为organ和organization有相同的词根:organ。通常这个不是什么大问题,但是在一些特殊的文档中就会导致有歧义的结果,所以我们希望防止单词organization和organizations被缩减为词干。
english analyzer
PUT /my_index { "mappings": { "blog": { "properties": { "title": { "type": "string", "analyzer": "english" // [1] } } } } }
- 【1】 title字段将会用english(英语)分析器替换默认的standard(标准)分析器
GET /my_index/_analyze?field=title I'm not happy about the foxes
这个分词为:
i'm,happi,about,fox
我们无法分辨源文档中是包含单数 fox 还是复数 foxes ;单词 not 因为是停用词所以被移除了, 所以我们无法分辨源文档中是happy about foxes还是not happy about foxes,虽然通过使用 english (英语)分析器,使得匹配规则更加宽松,我们也因此提高了召回率,但却降低了精准匹配文档的能力。
为了获得两方面的优势,我们可以使用multifields(多字段)对 title 字段建立两次索引: 一次使用 english(英语)分析器,另一次使用 standard(标准)分析器:
PUT /my_index { "mappings": { "blog": { "properties": { "title": { // [1] "type": "string", "fields": { "english": { // [2] "type": "string", "analyzer": "english" } } } } } } }
-
[1]主 title 字段使用 standard(标准)分析器。
-
[2]title.english 子字段使用english(英语)分析器
替换为该字段映射后,我们可以索引一些测试文档来展示怎么在搜索时使用两个字段。
PUT /my_index/blog/1 { "title": "I'm happy for this fox" } PUT /my_index/blog/2 { "title": "I'm not happy about my fox problem" } GET /_search { "query": { "multi_match": { "type": "most_fields", // [1] "query": "not happy foxes", "fields": [ "title", "title.english" ] } } }
- [1] 使用most_fields query type(多字段搜索语法)让我们可以用多个字段来匹配同一段文本。
czech analyzer
这个捷克语分词器可以被实现,作为一个自定义的分词器。
PUT /czech_example { "settings": { "analysis": { "filter": { "czech_stop": { "type": "stop", "stopwords": "_czech_" // [1] }, "czech_keywords": { "type": "keyword_marker", "keywords": ["příklad"] // [2] }, "czech_stemmer": { "type": "stemmer", "language": "czech" } }, "analyzer": { "rebuilt_czech": { "tokenizer": "standard", "filter": [ "lowercase", "czech_stop", "czech_keywords", "czech_stemmer" ] } } } } }
注释
-
[1] 这个默认的停止词可以被覆盖,设置这个stopwords 或者 stopwords_path
-
[2] 这个过滤器可以被删除,除非有一些单词应该被排除在词干中。
例子
GET /_analyze { "tokenizer": "whitespace", "filter": [ "stemmer" ], "text": "fox running and jumping" }
这个请求会产生如下的一些词组,比如running会被提取词干为run 和 jumping被提取为jump。
[ fox, run, and, jump ]
若不想被提取词干,则需要对单词进行标记,即keyword_marker参数过滤
GET /_analyze { "tokenizer": "whitespace", "filter": [ { "type": "keyword_marker", "keywords": [ "jumping" ] }, "stemmer" ], "text": "fox running and jumping" }
如下则为提取结果:
[ fox, run, and, jumping ]
jumping则没有被提取词干。
这篇关于Elastic-Language analyzer的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2025-01-10Rakuten 乐天积分系统从 Cassandra 到 TiDB 的选型与实战
- 2025-01-09CMS内容管理系统是什么?如何选择适合你的平台?
- 2025-01-08CCPM如何缩短项目周期并降低风险?
- 2025-01-08Omnivore 替代品 Readeck 安装与使用教程
- 2025-01-07Cursor 收费太贵?3分钟教你接入超低价 DeepSeek-V3,代码质量逼近 Claude 3.5
- 2025-01-06PingCAP 连续两年入选 Gartner 云数据库管理系统魔力象限“荣誉提及”
- 2025-01-05Easysearch 可搜索快照功能,看这篇就够了
- 2025-01-04BOT+EPC模式在基础设施项目中的应用与优势
- 2025-01-03用LangChain构建会检索和搜索的智能聊天机器人指南
- 2025-01-03图像文字理解,OCR、大模型还是多模态模型?PalliGema2在QLoRA技术上的微调与应用