Lucene解析器异常标签含义查询及可读性报错转换问题
四个未知标签的具体含义
<BAREOPER>:指代无对应操作项的裸操作符,比如查询语句末尾单独残留的AND/OR/+/-、或是操作符前后没有衔接任何查询词的场景。<PREFIXTERM>:指代前缀查询的语法项,也就是后缀带*通配符的查询词,比如phon*可匹配phone、phonograph等同前缀的词。<REGEXPTERM>:指代正则查询的语法项,也就是被/前后包裹的正则表达式内容,符合Lucene自定义的正则查询语法规则。<RANGE_GOOP>:指代范围查询的括号内部内容,比如[100 TO 500]中的100 TO 500、{apple TO banana}中的apple TO banana都属于这类语法项。
对应匹配规则的代码位置
所有Token的正则匹配规则都定义在Lucene源码路径下的lucene/queryparser/src/java/org/apache/lucene/queryparser/classic/QueryParser.jj文件中,这是JavaCC的语法定义文件,你提到的QueryParserConstants类就是由该文件编译自动生成的,你要找的所有标签对应的正则匹配逻辑都可以在这个文件的语法声明段找到。
内容的提问来源于stack exchange,提问作者Georgey
相关产品推荐
相关产品推荐

