-
Notifications
You must be signed in to change notification settings - Fork 242
/
EntityMapping.java
130 lines (112 loc) · 4.5 KB
/
EntityMapping.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
119
120
121
122
123
124
125
126
127
128
129
130
/*
* 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.analyzer.Discriminator;
import org.hibernate.search.bridge.FieldBridge;
import org.hibernate.search.engine.BoostStrategy;
/**
* @author Emmanuel Bernard
*/
public class EntityMapping {
private final SearchMapping mapping;
private final EntityDescriptor entity;
public EntityMapping(Class<?> entityType, SearchMapping mapping) {
this.mapping = mapping;
entity = mapping.getEntity( entityType );
}
public IndexedMapping indexed() {
return new IndexedMapping( mapping, entity );
}
public EntitySpatialMapping spatial() {
return new EntitySpatialMapping( mapping, entity );
}
/**
* @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 EntityMapping boost(float boost) {
final Map<String, Object> boostAnn = new HashMap<String, Object>();
boostAnn.put( "value", boost );
entity.setBoost( boostAnn );
return this;
}
/**
* @param impl The class for an implementation of {@link BoostStrategy}.
* @return this mapping, for chained calls.
*
* @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 EntityMapping dynamicBoost(Class<? extends BoostStrategy> impl) {
final Map<String, Object> dynamicBoost = new HashMap<String, Object>();
dynamicBoost.put( "impl", impl );
entity.setDynamicBoost( dynamicBoost );
return this;
}
public EntityMapping analyzerDiscriminator(Class<? extends Discriminator> discriminator) {
final Map<String, Object> discriminatorAnn = new HashMap<String, Object>();
discriminatorAnn.put( "impl", discriminator );
entity.setAnalyzerDiscriminator( discriminatorAnn );
return this;
}
public FullTextFilterDefMapping fullTextFilterDef(String name, Class<?> impl) {
return new FullTextFilterDefMapping( mapping, name, impl );
}
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 ClassBridgeMapping classBridge(Class<?> impl) {
return new ClassBridgeMapping( mapping, entity, impl );
}
/**
* Registers the given class bridge for the currently configured entity type. Any subsequent analyzer, parameter
* etc. configurations apply to this class bridge.
*
* @param classBridge a class bridge instance
* @return a new {@link ClassBridgeMapping} following the method chaining pattern
* @hsearch.experimental This method is considered experimental and it may be altered or removed in future releases
* @throws org.hibernate.search.exception.SearchException in case the same bridge instance is passed more than once for the
* currently configured entity type
*/
public ClassBridgeMapping classBridgeInstance(FieldBridge classBridge) {
return new ClassBridgeMapping( mapping, entity, classBridge );
}
}