blob: 3cd40513209bc57dde9b907e909d3655e8ae6efe [file] [log] [blame]
Nils Diewaldf399a672013-11-18 17:55:22 +00001package de.ids_mannheim.korap.query.wrap;
2
3import org.apache.lucene.search.RegexpQuery;
4import org.apache.lucene.search.spans.SpanQuery;
5import org.apache.lucene.search.spans.SpanMultiTermQueryWrapper;
6import org.apache.lucene.util.automaton.RegExp;
7import org.apache.lucene.index.Term;
8
9import java.util.*;
10
11public 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 Diewaldf399a672013-11-18 17:55:22 +000031 re = re.toLowerCase();
32 };
33 RegexpQuery requery = new RegexpQuery(new Term(field, re), flags);
34 query = new SpanMultiTermQueryWrapper<RegexpQuery>( requery );
Nils Diewaldb0dd9552013-12-20 02:28:34 +000035
Nils Diewaldf399a672013-11-18 17:55:22 +000036 };
37
38 public SpanQuery toQuery() {
39 return this.query;
40 };
41};