6172 |
18 Mar 21 |
nicklas |
1 |
package net.sf.basedb.varsearch.query; |
6172 |
18 Mar 21 |
nicklas |
2 |
|
6172 |
18 Mar 21 |
nicklas |
3 |
import org.apache.lucene.document.FloatPoint; |
6172 |
18 Mar 21 |
nicklas |
4 |
import org.apache.lucene.search.Query; |
6172 |
18 Mar 21 |
nicklas |
5 |
|
6172 |
18 Mar 21 |
nicklas |
6 |
/** |
6172 |
18 Mar 21 |
nicklas |
Helper implementation for float fields. |
6172 |
18 Mar 21 |
nicklas |
@author nicklas |
6172 |
18 Mar 21 |
nicklas |
9 |
*/ |
6172 |
18 Mar 21 |
nicklas |
10 |
public class FloatQueryField |
6172 |
18 Mar 21 |
nicklas |
11 |
extends ComparableQueryField |
6172 |
18 Mar 21 |
nicklas |
12 |
{ |
6172 |
18 Mar 21 |
nicklas |
13 |
|
6172 |
18 Mar 21 |
nicklas |
14 |
public static final FloatQueryField INSTANCE = new FloatQueryField(); |
6172 |
18 Mar 21 |
nicklas |
15 |
|
6172 |
18 Mar 21 |
nicklas |
16 |
private FloatQueryField() |
6172 |
18 Mar 21 |
nicklas |
17 |
{} |
6172 |
18 Mar 21 |
nicklas |
18 |
|
6172 |
18 Mar 21 |
nicklas |
19 |
@Override |
6172 |
18 Mar 21 |
nicklas |
20 |
public Query newExactQuery(String field, String value) |
6172 |
18 Mar 21 |
nicklas |
21 |
{ |
6172 |
18 Mar 21 |
nicklas |
22 |
return FloatPoint.newExactQuery(field, Float.parseFloat(value)); |
6172 |
18 Mar 21 |
nicklas |
23 |
} |
6172 |
18 Mar 21 |
nicklas |
24 |
|
6172 |
18 Mar 21 |
nicklas |
25 |
@Override |
6172 |
18 Mar 21 |
nicklas |
26 |
public Query newRangeQuery(String field, String part1, String part2, boolean startInclusive, boolean endInclusive) |
6172 |
18 Mar 21 |
nicklas |
27 |
{ |
6172 |
18 Mar 21 |
nicklas |
28 |
float start = 0; |
6172 |
18 Mar 21 |
nicklas |
29 |
if (part1 != null && !"*".equals(part1)) |
6172 |
18 Mar 21 |
nicklas |
30 |
{ |
6172 |
18 Mar 21 |
nicklas |
31 |
start = Float.parseFloat(part1); |
6172 |
18 Mar 21 |
nicklas |
32 |
if (!startInclusive) start = Math.nextUp(start); |
6172 |
18 Mar 21 |
nicklas |
33 |
} |
6172 |
18 Mar 21 |
nicklas |
34 |
float end = Float.MAX_VALUE; |
6172 |
18 Mar 21 |
nicklas |
35 |
if (part2 != null && !"*".equals(part2)) |
6172 |
18 Mar 21 |
nicklas |
36 |
{ |
6172 |
18 Mar 21 |
nicklas |
37 |
end = Float.parseFloat(part2); |
6172 |
18 Mar 21 |
nicklas |
38 |
if (!endInclusive) end = Math.nextDown(end); |
6172 |
18 Mar 21 |
nicklas |
39 |
} |
6172 |
18 Mar 21 |
nicklas |
40 |
return FloatPoint.newRangeQuery(field, start, end); |
6172 |
18 Mar 21 |
nicklas |
41 |
} |
6172 |
18 Mar 21 |
nicklas |
42 |
|
6172 |
18 Mar 21 |
nicklas |
43 |
} |