Кто-нибудь знает способ индексации регулярных выражений , чтобы я мог выполнять запросы без регулярных выражений, сопоставляя их с документами с полем регулярных выражений в них?Желательно с Lucene или другой внутрипроцессной библиотекой Java.
Справочная информация
Я работаю над проектом, в котором мы хотим классифицировать большое количество пользовательских транзакций.Сейчас у нас есть инструменты для этого, но нам нужно оптимизировать.
В настоящее время я изучаю lucene для замены отсортированного в памяти дерева, построенного на основе реализации, используя HashMaps, ConcurrentSkipListSets в отношениях родитель-потомок.
a -> category cat1
1 -> category cat2
b -> category cat4
\w*
6 -> category cat5
Таким образом, строка 'a 1' и 'a 1 zx y' будет соответствовать 'cat2' , 'a' будет соответствовать 'cat1' и 'bxy 6' будет соответствовать 'cat5' .Все правила имеют неявное значение '. *' в конце, и если сопоставление возможно без сопоставления с регулярным выражением, это предпочтительнее.Эти правила построены из списков свойств:
a = cat1
a 1 = cat2
b = cat4
b \w* 6 = cat5
Сейчас мы внедряем правила 50 КБ (и их количество увеличивается), и хотя этот процесс очень быстр при поиске, он использует слишком много ОЗУ, на его сборку требуется немного времени,и не так гибко, как нам нужно.
Я экспериментировал с Lucene для индексации этих правил, но у меня возникли проблемы, поскольку регулярное выражение сопоставляет много общих слов (в нашей области), и для них нелегко создать стоп-слова, так как они такжеменяются довольно часто.
Итак, еще раз повторюсь - мне нужен способ поиска документов, в которых проиндексировано регулярное выражение, а запрос вообще не знает о регулярном выражении.
Кто-нибудь?
- Olve