如何移除自定义ArangoSearch分析器生成的空字符串token
ArangoSearch自定义分析器空字符串Token修复方案
问题根因
当前链式堆叠多个独立delimiter分词器的配置逻辑存在缺陷:当文本中出现连续的已定义分隔符(比如测试用例里逗号后紧跟的空格、文本末尾的句点)时,两个相邻分隔符之间不存在有效字符,分词流程就会生成空字符串Token,多个独立的delimiter处理器默认不会自动过滤这类空值。
修复方法
二选一即可,优先推荐第一种:
- 方案1(性能最优):将所有需要识别为分隔符的字符合并到同一个delimiter配置节点中。ArangoSearch的delimiter分析器原生支持传入多字符分隔符集合,处理时会自动跳过连续分隔符产生的空内容,不需要额外过滤。
- 方案2(兼容现有链式结构):在所有delimiter处理节点之后、stem词干提取节点之前,新增一个
stopwords类型的过滤节点,将空字符串加入停用词表直接过滤。
修正后配置(方案1)
配置中未加入连字符-,符合不把连字符作为分隔符的需求:
{ "pipeline": [ { "type": "norm", "properties": { "locale": "en.utf-8", "accent": false, "case": "lower", "stemming": false } }, { "type": "delimiter", "properties": { "delimiter": " !.,;?[]{}()<>~@=&|\n" } }, { "type": "stem", "properties": { "locale": "en.utf-8" } } ] }
方案2补充配置
如果保留原有多delimiter的链式结构,在最后一个delimiter节点后插入以下配置即可过滤空串:
{"type": "stopwords", "properties": {"stopwords": [""]}}
验证效果
使用修正后的配置处理测试文本HYPNOS2, Aphrodite and other Microcontrollers.,输出Token列表为["hypnos2", "aphrodit", "and", "other", "microcontrol"],空字符串Token完全消除。
内容的提问来源于stack exchange,提问作者ggendel
相关产品推荐
相关产品推荐

