-
Notifications
You must be signed in to change notification settings - Fork 242
/
PropertySpatialMapping.java
118 lines (98 loc) · 3.61 KB
/
PropertySpatialMapping.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
/*
* Hibernate Search, full-text search for your domain model
*
* License: GNU Lesser General Public License (LGPL), version 2.1 or later
* See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
*/
package org.hibernate.search.cfg;
import java.lang.annotation.ElementType;
import java.util.HashMap;
import java.util.Map;
import org.apache.lucene.analysis.util.TokenizerFactory;
import org.hibernate.search.annotations.SpatialMode;
import org.hibernate.search.annotations.Store;
import org.hibernate.search.bridge.FieldBridge;
/**
* @author Nicolas Helleringer
*/
public class PropertySpatialMapping {
private final SearchMapping mapping;
private final EntityDescriptor entity;
private final PropertyDescriptor property;
private final Map<String, Object> spatial = new HashMap<String, Object>();
public PropertySpatialMapping(PropertyDescriptor property, EntityDescriptor entity, SearchMapping mapping) {
this.mapping = mapping;
this.entity = entity;
this.property = property;
this.property.setSpatial( spatial );
}
public PropertySpatialMapping spatial() {
return new PropertySpatialMapping( property, entity, mapping );
}
public PropertySpatialMapping name(String fieldName) {
spatial.put( "name", fieldName );
return this;
}
public PropertySpatialMapping store(Store store) {
spatial.put( "store", store );
return this;
}
/**
* @deprecated Index-time boosting will not be possible anymore starting from Lucene 7.
* You should use query-time boosting instead, for instance by calling
* {@link org.hibernate.search.query.dsl.FieldCustomization#boostedTo(float) boostedTo(float)}
* when building queries with the Hibernate Search query DSL.
*/
@Deprecated
public PropertySpatialMapping boost(float boost) {
final Map<String, Object> boostAnn = new HashMap<String, Object>();
boostAnn.put( "value", boost );
spatial.put( "boost", boostAnn );
return this;
}
public PropertySpatialMapping spatialMode(SpatialMode spatialMode) {
spatial.put( "spatialMode", spatialMode );
return this;
}
public PropertySpatialMapping topSpatialHashLevel(int topSpatialHashLevel) {
spatial.put( "topSpatialHashLevel", topSpatialHashLevel );
return this;
}
public PropertySpatialMapping bottomSpatialHashLevel(int bottomSpatialHashLevel) {
spatial.put( "bottomSpatialHashLevel", bottomSpatialHashLevel );
return this;
}
public FieldMapping field() {
return new FieldMapping( property, entity, mapping );
}
public PropertyMapping property(String name, ElementType type) {
return new PropertyMapping( name, type, entity, mapping );
}
/**
* @deprecated See {@link org.hibernate.search.annotations.AnalyzerDef}
*/
@Deprecated
public AnalyzerDefMapping analyzerDef(String name, Class<? extends TokenizerFactory> tokenizerFactory) {
return analyzerDef( name, "", tokenizerFactory );
}
/**
* @deprecated See {@link org.hibernate.search.annotations.AnalyzerDef}
*/
@Deprecated
public AnalyzerDefMapping analyzerDef(String name, String tokenizerName, Class<? extends TokenizerFactory> tokenizerFactory) {
return new AnalyzerDefMapping( name, tokenizerName, tokenizerFactory, mapping );
}
/**
* @deprecated See {@link org.hibernate.search.annotations.AnalyzerDef}
*/
@Deprecated
public NormalizerDefMapping normalizerDef(String name) {
return new NormalizerDefMapping( name, mapping );
}
public EntityMapping entity(Class<?> entityType) {
return new EntityMapping( entityType, mapping );
}
public PropertyMapping bridge(Class<? extends FieldBridge> fieldBridge) {
return new FieldBridgeDirectMapping( property, entity, mapping, fieldBridge );
}
}