的正则表达式是什么?首先在弹性搜索中使用regexp过滤器



我正在使用Elastic Search开发一个搜索引擎-我正在使用它的java API。我想为我的查询配置一个regexp过滤器,特别是一个"以开头"的过滤器。

假设我的索引中有以下标题:

  1. 世界
  2. 关于他的事情
  3. 乔治的最后通牒
  4. 跳跃
  5. 吉米和羊群

如果我想得到以字母t或th开头的结果,我应该使用什么正则表达式

搜索后的正确结果应该是

  1. 世界
  2. 关于他的事情

我尝试过使用:

^t.*   OR   ^[t.*]

但不会返回任何结果。启动锚点^在Elastic上不起作用,尽管文档中有这样的说明。

t.*   OR   [t.*]

但它的工作原理与前缀过滤器一样,包括结果"jimmy and the flock"

注:

  • 我不能使用regexp查询(这是我正在构建的搜索引擎的限制),所以我只能使用过滤器
  • 我尝试过使用前缀过滤器,但它会评估术语,例如,使用前缀参数"t"会包括标题"jimmy and the flock",因为"the"术语

顺便说一句,我使用的是ES 1.0.0版本的

ElasticSearch博客上有一个专门的页面可以准确地回答您的问题:http://www.elasticsearch.org/blog/starts-with-phrase-matching/;正如pickypg所建议的,这是一个映射问题,您必须设置一个特殊的分析器,将"关键字"标记化器和"小写"过滤器结合起来。

最新更新