将Regex转换为Lucene SpanQuery

时间:2019-07-02 15:01:32

标签: regex lucene

我有一组RegEX规则(100多个规则)可在Lucene索引上进行搜索,该字段使用StandardAnalyzer进行了标记化和分析,类似于本文(Searching for Social security number using Lucene 4 regexp)。 RegexpQuery不适用于分析的字段。 正如@femtoRgon指出SpanQuery可能起作用,我尝试使用SSN,它按预期工作;但是我有100多个正则表达式:

例如查找电子邮件:

([[a-zA-Z0-9 _-])+(。([a-zA-Z0-9 _-]] +) @([[((((([0-1])? ([[0-9])?[0-9])|(2 [0-4] [0-9])|(2 [0-5] [0-5])))。((((( 0-1])?(([0-9])?[0-9])|(2 [0-4] [0-9])|(2 [0-5] [0-5])))) 。((((([0-1])?([0-9])?[0-9])|(2 [0-4] [0-9])|(2 [0-5] [0 -5])))(((((([0-1])?([0-9])?[0-9])|(2 [0-4] [0-9])|(2 [ 0-5] [0-5]))])))(((([[a-zA-Z0-9])+(([-])+([a-zA-Z0-9])+)< / em>。)+([a-zA-Z])+(([-])+([a-zA-Z0-9])+)*))

查找电话号码:

\ s + [\(] {0,1}([0-9]){3} [\)] {0,1} []?([^ 0-1]){1}([0 -9]){2} []?[-]?[]?([0-9]){4} [] *((x){0,1}([0-9]){1,5 }){0,1}

任何人都知道是否有Java代码,我可以将Regex转换为SpanQuery吗?

或者进行任何大型RegEX匹配的建议是可行的吗?

我当时在考虑建立索引时要进行正则表达式匹配,但这会显着降低索引速度。

赞赏任何建议。

0 个答案:

没有答案