У меня есть набор правил RegEX (более 100 правил) для поиска по индексу Lucene, поле разбивается на токены и анализируется с помощью StandardAnalyzer, аналогично этому сообщению ( Поиск номера социального страхования с помощью 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]) +) .) + ([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?
Я думал, что совпадение с регулярным выражением при построении индекса, но это значительно увеличит скорость индекса.
Оцените любые предложения.