首页 > 解决方案 > Lucene 解析器异常中标签的含义

问题描述

我想显示来自 Lucene 的人类可读的解析错误。隐藏在 ElasticsearchException 中被抑制的异常中的是一些关于导致解析器错误的真正有用的信息。例如

"Encountered \"<EOF>\" at line 1, column 32.\nWas expecting one of:\n    <AND> ...\n    <OR> ...\n    <NOT> ...\n    \"+\" ...\n    \"-\" ...\n    <BAREOPER> ...\n    \"(\" ...\n    \")\" ...\n    \"*\" ...\n    \"^\" ...\n    <QUOTED> ...\n    <TERM> ...\n    <FUZZY_SLOP> ...\n    <PREFIXTERM> ...\n    <WILDTERM> ...\n    <REGEXPTERM> ...\n    \"[\" ...\n    \"{\" ...\n    <NUMBER> ...\n    "

它们来自 QueryParserConstants 并且对于它们中的大多数来说,它们所指的查询语法的哪一部分是显而易见的,例如 CARAT => ^ 但有些并不那么明显:

<BAREOPER>, <PREFIXTERM>, <REGEXPTERM>, <RANGE_GOOP>

在 QueryParserConstants 中,这些名称被映射到对正则表达式项的整数引用,但是,尽管检查了 Lucene 源代码,我仍然无法弄清楚这些名称的含义。

有谁知道这些指的是什么,或者知道我可以在代码中的哪里找到相关的正则表达式术语,所以我可以从中找出答案?

标签: parsingsyntaxlucene

解决方案


推荐阅读