Skip to content

Commit fbbfe41

Browse files
author
Anton Hosgood
committed
feat: loadTokenizer uses default tokenizer when none provided
1 parent a7459d2 commit fbbfe41

File tree

2 files changed

+19
-4
lines changed

2 files changed

+19
-4
lines changed

oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/NodeStateAnalyzerFactory.java

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -58,8 +58,6 @@
5858
import org.slf4j.Logger;
5959
import org.slf4j.LoggerFactory;
6060

61-
import static java.util.Objects.requireNonNull;
62-
6361
/**
6462
* Constructs a Lucene Analyzer from nodes (based on NodeState content).
6563
*
@@ -141,9 +139,13 @@ private CharFilterFactory[] loadCharFilterFactories(NodeState charFiltersState)
141139
}
142140

143141
private TokenizerFactory loadTokenizer(NodeState state) {
144-
String clazz = requireNonNull(state.getString(FulltextIndexConstants.ANL_NAME));
142+
String name = state.getString(FulltextIndexConstants.ANL_NAME);
143+
if (name == null) {
144+
log.warn("No tokenizer name specified in analyzer configuration. Using default 'standard' tokenizer.");
145+
name = "standard";
146+
}
145147
Map<String, String> args = convertNodeState(state);
146-
TokenizerFactory tf = TokenizerFactory.forName(clazz, args);
148+
TokenizerFactory tf = TokenizerFactory.forName(name, args);
147149
init(tf, state);
148150
return tf;
149151
}

oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/NodeStateAnalyzerFactoryTest.java

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@
3838
import org.apache.lucene.analysis.core.StopFilterFactory;
3939
import org.apache.lucene.analysis.core.WhitespaceTokenizerFactory;
4040
import org.apache.lucene.analysis.path.PathHierarchyTokenizerFactory;
41+
import org.apache.lucene.analysis.standard.StandardTokenizerFactory;
4142
import org.apache.lucene.analysis.util.CharArraySet;
4243
import org.apache.lucene.analysis.util.ClasspathResourceLoader;
4344
import org.apache.lucene.analysis.util.StopwordAnalyzerBase;
@@ -191,6 +192,18 @@ public void nodeStateAsMap() throws Exception{
191192
assertNull(result.get(":hiddenProp"));
192193
}
193194

195+
@Test
196+
public void missingTokenizerName() throws Exception{
197+
NodeBuilder nb = EMPTY_NODE.builder();
198+
nb.child(ANL_TOKENIZER);
199+
200+
TokenizerChain analyzer = (TokenizerChain) factory.createInstance(nb.getNodeState());
201+
assertNotNull(analyzer);
202+
assertNotNull(analyzer.getTokenizer());
203+
204+
assertEquals(StandardTokenizerFactory.class.getName(), analyzer.getTokenizer().getClassArg());
205+
}
206+
194207
private static NodeBuilder createFileNode(NodeBuilder nb, String nodeName, byte[] content){
195208
return nb.child(nodeName).child(JCR_CONTENT).setProperty(JCR_DATA, content);
196209
}

0 commit comments

Comments
 (0)