Hello, everyone. 

I have maybe not standard question, how to use together Automaton and 
SpanMultiTermQueryWrapper. 

Main idea of this approach is solve some problem with search. I need search 
combination of numbers on text. Combination is any numbers 
[0-9]{3}-[0-9]{3}-[0-9]{3}, exclude 111 in any position. 

So DFA for this will be:


Automaton full = new RegExp("[0-9]{3}.[0-9]{3}.[0-9]{3}").toAutomaton();
Automaton exclude1 = new RegExp("111.[0-9]{3}.[0-9]{3}").toAutomaton();
Automaton exclude2 = new RegExp("[0-9]{3}.111.[0-9]{3}").toAutomaton();
Automaton exclude3 = new RegExp("[0-9]{3}.[0-9]{3}.111").toAutomaton();
            
full = Operations.minus(full, exclude1);
full = Operations.minus(full, exclude2);
full = Operations.minus(full, exclude3);
full = MinimizationOperations.minimize(full);

Query query = new AutomatonQuery(new Term("body"), full);

This query working fine with single term like 123-456-789, but we are using 
StandardAnalyzer for body, so it will be separated to 3 Terms {123, 456, 789} 
and search will not work. 

I want use SpanMultiTermQueryWrapper to make search terms with order using 
automata rules. 

Any clue? 

Thanks


PS. Operations.subsetOf(Automata.makeString("123-456-789"), full); => true; 
Operations.subsetOf(Automata.makeString("111-456-789"), full); => false. 
TestCase for Automata works fine. 

Regards,
Valentin Popov




Reply via email to