【问题标题】:Custom character filter in analyzer not working分析器中的自定义字符过滤器不起作用
【发布时间】:2020-03-14 09:36:57
【问题描述】:

我在 couchbase 中为我的分析器使用正则表达式字符过滤器。

phuong 1 -> phuong_1
phuong  12 -> phuong_12

在 Couchbase Web 控制台中配置字符过滤器

Regular expression : ([a-z])\s+(\\d)
Replacement: $1_
  • 上述配置的结果是产生 term [phuong,1, 12]
  • 理想的结果是 [phuong_1 , phuong_12]
  • 我已多次对齐此代码,但仍然无法正常工作
  • 你能帮我解决这个问题吗?

【问题讨论】:

  • 没有人找到方法?
  • 你需要匹配这个精确的模式吗?因为如果只是空格问题,您可以使用正则表达式:\s+ 和替换:_
  • 哦不。我的表达式 -> 数字后面是空格和一个单词

标签: regex full-text-search couchbase bleve


【解决方案1】:

Couchbase 的全文搜索是用 golang 实现的。这是您的正则表达式如何工作的游乐场插图..

https://play.golang.org/p/Jray7DTYZam

如上图所示,$1x 等价于 ${1x},而不是 ${1}x。所以你的替换需要更新为${1}_

这就是说,我们有一个限制,即目前不支持变量($1、${2} 等)。我创建了一个内部票据来扩展对此的支持。

【讨论】:

  • 感谢您反馈我的问题。根据您的回答,我认为替换应该是 ${1}_${2}
  • 虽然结果是正确的,但 couchbase 仍然没有产生正确的术语,例如 phuong_1 , phuong_12 。我在elasticsearch中测试,它可以工作,但couchbase没有couchbase有什么问题吗?
猜你喜欢
  • 2018-04-07
  • 2017-08-16
  • 2017-07-25
  • 1970-01-01
  • 2012-08-19
  • 1970-01-01
  • 1970-01-01
  • 2012-08-22
  • 1970-01-01
相关资源
最近更新 更多