| Nils Diewald | f399a67 | 2013-11-18 17:55:22 +0000 | [diff] [blame] | 1 | package de.ids_mannheim.korap.query.wrap; |
| 2 | |
| 3 | import org.apache.lucene.search.RegexpQuery; |
| 4 | import org.apache.lucene.search.spans.SpanQuery; |
| 5 | import org.apache.lucene.search.spans.SpanMultiTermQueryWrapper; |
| 6 | import org.apache.lucene.util.automaton.RegExp; |
| 7 | import org.apache.lucene.index.Term; |
| 8 | |
| 9 | import java.util.*; |
| 10 | |
| 11 | public class SpanRegexQueryWrapper { |
| 12 | private SpanQuery query; |
| 13 | |
| 14 | public SpanRegexQueryWrapper (String field, String re) { |
| 15 | this(field, re, RegExp.ALL, false); |
| 16 | }; |
| 17 | |
| 18 | public SpanRegexQueryWrapper (String field, String re, int flags) { |
| 19 | this(field, re, flags, false); |
| 20 | }; |
| 21 | |
| 22 | public SpanRegexQueryWrapper (String field, String re, boolean caseinsensitive) { |
| 23 | this(field, re, RegExp.ALL, caseinsensitive); |
| 24 | }; |
| 25 | |
| 26 | public SpanRegexQueryWrapper (String field, String re, int flags, boolean caseinsensitive) { |
| 27 | if (caseinsensitive) { |
| 28 | if (re.startsWith("s:")) { |
| 29 | re = re.replaceFirst("s:", "i:"); |
| 30 | }; |
| Nils Diewald | f399a67 | 2013-11-18 17:55:22 +0000 | [diff] [blame] | 31 | re = re.toLowerCase(); |
| 32 | }; |
| 33 | RegexpQuery requery = new RegexpQuery(new Term(field, re), flags); |
| 34 | query = new SpanMultiTermQueryWrapper<RegexpQuery>( requery ); |
| Nils Diewald | b0dd955 | 2013-12-20 02:28:34 +0000 | [diff] [blame] | 35 | |
| Nils Diewald | f399a67 | 2013-11-18 17:55:22 +0000 | [diff] [blame] | 36 | }; |
| 37 | |
| 38 | public SpanQuery toQuery() { |
| 39 | return this.query; |
| 40 | }; |
| 41 | }; |