德语复合词拆分搜索如何实现强制匹配所有拆分单元?
德语复合词搜索解决方案
1. 调整分析器配置,实现仅返回拆分后分词单元
你当前拆分不完整、保留原词的问题可以通过修改dictionary_decompounder的参数解决:
- 补全
word_list的分词单元:你当前只配置了web,所以无法拆分出entwickler,需要把所有预期拆分得到的德语基础词都加入词表,词表较大时推荐用word_list_path加载外部词典文件提升性能 - 新增
preserve_original: false配置:该参数默认值为true,会保留原始复合词到token列表,设为false后仅返回拆分后的分词单元
调整后的分析器测试配置示例:
{ "tokenizer": "standard", "filter": [ "lowercase", { "type": "dictionary_decompounder", "word_list": ["web", "entwickler"], "preserve_original": false } ], "text": "webentwickler" }
上述配置返回的token结果为["web", "entwickler"],符合你的预期。
2. 强制匹配所有拆分分词的查询实现
前置要求
索引侧处理招聘广告文本时,必须使用和查询侧完全相同的分析器,保证不管是合写的webentwickler还是分写的web entwickler,索引存储的token都是["web", "entwickler"]。
具体查询配置
使用match查询时,将operator参数设置为and,即可要求搜索词拆分得到的所有分词都必须在文档中出现,不会出现仅匹配web的无关结果,同时也能命中分写web entwickler的内容:
{ "query": { "match": { "job_desc": { "query": "Webentwickler", "operator": "and" } } } }
可选优化
如果需要兼容更多德语拼写变体,可以在分析器的filter中新增同义词过滤器,提前配置常见复合词和拆分写法的同义词映射,进一步提升召回率。
内容的提问来源于stack exchange,提问作者simsi
相关产品推荐
相关产品推荐

