blob: faba7fcba74a8c5d757c7df65f6f4dfbb1de7921 [file] [log] [blame]
Nils Diewaldb0dd9552013-12-20 02:28:34 +00001package de.ids_mannheim.korap.query.wrap;
2
Nils Diewaldb0dd9552013-12-20 02:28:34 +00003import org.apache.lucene.index.Term;
Akrona26184e2018-12-05 15:37:34 +01004import org.apache.lucene.search.WildcardQuery;
5import org.apache.lucene.search.spans.SpanMultiTermQueryWrapper;
6import org.apache.lucene.search.spans.SpanQuery;
Nils Diewaldb0dd9552013-12-20 02:28:34 +00007
Nils Diewald92729ce2014-10-06 16:00:17 +00008public class SpanWildcardQueryWrapper extends SpanQueryWrapper {
Nils Diewaldb0dd9552013-12-20 02:28:34 +00009 private SpanQuery query;
Nils Diewaldbb33da22015-03-04 16:24:25 +000010
11
Nils Diewaldb0dd9552013-12-20 02:28:34 +000012 public SpanWildcardQueryWrapper (String field, String wc) {
Nils Diewaldd75e6f62015-01-28 23:44:56 +000013 this(field, wc, false);
Nils Diewaldb0dd9552013-12-20 02:28:34 +000014 };
15
Nils Diewaldbb33da22015-03-04 16:24:25 +000016
17 public SpanWildcardQueryWrapper (String field, String wc,
18 boolean caseinsensitive) {
Nils Diewaldd75e6f62015-01-28 23:44:56 +000019 if (caseinsensitive) {
20 if (wc.startsWith("s:")) {
21 wc = wc.replaceFirst("s:", "i:");
22 };
23 wc = wc.toLowerCase();
24 };
25 WildcardQuery wcquery = new WildcardQuery(new Term(field, wc));
Nils Diewaldbb33da22015-03-04 16:24:25 +000026 query = new SpanMultiTermQueryWrapper<WildcardQuery>(wcquery);
Nils Diewaldb0dd9552013-12-20 02:28:34 +000027 };
28
Nils Diewaldbb33da22015-03-04 16:24:25 +000029
Akrona7b936d2016-03-04 13:40:54 +010030 public SpanQuery toFragmentQuery () {
Nils Diewaldd75e6f62015-01-28 23:44:56 +000031 return this.query;
Nils Diewaldb0dd9552013-12-20 02:28:34 +000032 };
Nils Diewald6b332812014-07-22 18:51:05 +000033
Nils Diewaldbb33da22015-03-04 16:24:25 +000034
Nils Diewald6b332812014-07-22 18:51:05 +000035 public boolean isNull () {
Nils Diewaldd75e6f62015-01-28 23:44:56 +000036 return false;
Nils Diewald6b332812014-07-22 18:51:05 +000037 };
Nils Diewaldb0dd9552013-12-20 02:28:34 +000038};