summaryrefslogtreecommitdiff
path: root/nouveau/src/main/java/org/apache/couchdb/nouveau/lucene9
diff options
context:
space:
mode:
Diffstat (limited to 'nouveau/src/main/java/org/apache/couchdb/nouveau/lucene9')
-rw-r--r--nouveau/src/main/java/org/apache/couchdb/nouveau/lucene9/Lucene9AnalyzerFactory.java14
-rw-r--r--nouveau/src/main/java/org/apache/couchdb/nouveau/lucene9/Lucene9Index.java80
-rw-r--r--nouveau/src/main/java/org/apache/couchdb/nouveau/lucene9/Lucene9Module.java4
-rw-r--r--nouveau/src/main/java/org/apache/couchdb/nouveau/lucene9/NouveauQueryParser.java10
-rw-r--r--nouveau/src/main/java/org/apache/couchdb/nouveau/lucene9/ParallelSearcherFactory.java2
-rw-r--r--nouveau/src/main/java/org/apache/couchdb/nouveau/lucene9/QueryDeserializer.java19
-rw-r--r--nouveau/src/main/java/org/apache/couchdb/nouveau/lucene9/QuerySerializer.java11
-rw-r--r--nouveau/src/main/java/org/apache/couchdb/nouveau/lucene9/SimpleAsciiFoldingAnalyzer.java4
8 files changed, 63 insertions, 81 deletions
diff --git a/nouveau/src/main/java/org/apache/couchdb/nouveau/lucene9/Lucene9AnalyzerFactory.java b/nouveau/src/main/java/org/apache/couchdb/nouveau/lucene9/Lucene9AnalyzerFactory.java
index d70fea103..2bd47ed97 100644
--- a/nouveau/src/main/java/org/apache/couchdb/nouveau/lucene9/Lucene9AnalyzerFactory.java
+++ b/nouveau/src/main/java/org/apache/couchdb/nouveau/lucene9/Lucene9AnalyzerFactory.java
@@ -13,10 +13,11 @@
package org.apache.couchdb.nouveau.lucene9;
+import jakarta.ws.rs.WebApplicationException;
+import jakarta.ws.rs.core.Response.Status;
import java.util.HashMap;
import java.util.Map;
import java.util.function.Supplier;
-
import org.apache.couchdb.nouveau.api.IndexDefinition;
import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.analysis.ar.ArabicAnalyzer;
@@ -59,13 +60,9 @@ import org.apache.lucene.analysis.sv.SwedishAnalyzer;
import org.apache.lucene.analysis.th.ThaiAnalyzer;
import org.apache.lucene.analysis.tr.TurkishAnalyzer;
-import jakarta.ws.rs.WebApplicationException;
-import jakarta.ws.rs.core.Response.Status;
-
public final class Lucene9AnalyzerFactory {
- private Lucene9AnalyzerFactory() {
- }
+ private Lucene9AnalyzerFactory() {}
public static Analyzer fromDefinition(final IndexDefinition indexDefinition) {
final Analyzer defaultAnalyzer = newAnalyzer(indexDefinition.getDefaultAnalyzer());
@@ -73,14 +70,14 @@ public final class Lucene9AnalyzerFactory {
return defaultAnalyzer;
}
final Map<String, Analyzer> fieldAnalyzers = new HashMap<String, Analyzer>();
- for (Map.Entry<String, String> entry : indexDefinition.getFieldAnalyzers().entrySet()) {
+ for (Map.Entry<String, String> entry :
+ indexDefinition.getFieldAnalyzers().entrySet()) {
fieldAnalyzers.put(entry.getKey(), newAnalyzer(entry.getValue()));
}
return new PerFieldAnalyzerWrapper(defaultAnalyzer, fieldAnalyzers);
}
private enum KnownAnalyzer {
-
arabic(ArabicAnalyzer::new),
armenian(ArmenianAnalyzer::new),
basque(BasqueAnalyzer::new),
@@ -139,5 +136,4 @@ public final class Lucene9AnalyzerFactory {
throw new WebApplicationException(name + " is not a valid analyzer name", Status.BAD_REQUEST);
}
}
-
}
diff --git a/nouveau/src/main/java/org/apache/couchdb/nouveau/lucene9/Lucene9Index.java b/nouveau/src/main/java/org/apache/couchdb/nouveau/lucene9/Lucene9Index.java
index addb801f1..0de610f84 100644
--- a/nouveau/src/main/java/org/apache/couchdb/nouveau/lucene9/Lucene9Index.java
+++ b/nouveau/src/main/java/org/apache/couchdb/nouveau/lucene9/Lucene9Index.java
@@ -13,6 +13,8 @@
package org.apache.couchdb.nouveau.lucene9;
+import jakarta.ws.rs.WebApplicationException;
+import jakarta.ws.rs.core.Response.Status;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.nio.ByteBuffer;
@@ -31,7 +33,6 @@ import java.util.Map.Entry;
import java.util.Objects;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
-
import org.apache.couchdb.nouveau.api.DocumentDeleteRequest;
import org.apache.couchdb.nouveau.api.DocumentUpdateRequest;
import org.apache.couchdb.nouveau.api.DoubleField;
@@ -89,20 +90,20 @@ import org.apache.lucene.search.TopFieldCollector;
import org.apache.lucene.store.Directory;
import org.apache.lucene.util.BytesRef;
-import jakarta.ws.rs.WebApplicationException;
-import jakarta.ws.rs.core.Response.Status;
-
public class Lucene9Index extends Index {
- private static final Sort DEFAULT_SORT = new Sort(SortField.FIELD_SCORE,
- new SortField("_id", SortField.Type.STRING));
+ private static final Sort DEFAULT_SORT =
+ new Sort(SortField.FIELD_SCORE, new SortField("_id", SortField.Type.STRING));
private static final Pattern SORT_FIELD_RE = Pattern.compile("^([-+])?([\\.\\w]+)(?:<(\\w+)>)$");
private final Analyzer analyzer;
private final IndexWriter writer;
private final SearcherManager searcherManager;
- public Lucene9Index(final Analyzer analyzer, final IndexWriter writer, final long updateSeq,
+ public Lucene9Index(
+ final Analyzer analyzer,
+ final IndexWriter writer,
+ final long updateSeq,
final SearcherManager searcherManager) {
super(updateSeq);
this.analyzer = Objects.requireNonNull(analyzer);
@@ -147,7 +148,8 @@ public class Lucene9Index extends Index {
if (!writer.hasUncommittedChanges()) {
return false;
}
- writer.setLiveCommitData(Collections.singletonMap("update_seq", Long.toString(updateSeq)).entrySet());
+ writer.setLiveCommitData(
+ Collections.singletonMap("update_seq", Long.toString(updateSeq)).entrySet());
writer.commit();
return true;
}
@@ -213,11 +215,7 @@ public class Lucene9Index extends Index {
fieldDoc = null;
}
- return TopFieldCollector.createSharedManager(
- sort,
- searchRequest.getLimit(),
- fieldDoc,
- 1000);
+ return TopFieldCollector.createSharedManager(sort, searchRequest.getLimit(), fieldDoc, 1000);
}
private SortField getLastSortField(final Sort sort) {
@@ -225,8 +223,9 @@ public class Lucene9Index extends Index {
return sortFields[sortFields.length - 1];
}
- private SearchResults toSearchResults(final SearchRequest searchRequest, final IndexSearcher searcher,
- final Object[] reduces) throws IOException {
+ private SearchResults toSearchResults(
+ final SearchRequest searchRequest, final IndexSearcher searcher, final Object[] reduces)
+ throws IOException {
final SearchResults result = new SearchResults();
collectHits(searcher, (TopDocs) reduces[0], result);
if (reduces.length == 2) {
@@ -243,7 +242,8 @@ public class Lucene9Index extends Index {
for (final ScoreDoc scoreDoc : topDocs.scoreDocs) {
final Document doc = storedFields.document(scoreDoc.doc);
- final List<StoredField> fields = new ArrayList<StoredField>(doc.getFields().size());
+ final List<StoredField> fields =
+ new ArrayList<StoredField>(doc.getFields().size());
for (IndexableField field : doc.getFields()) {
if (field.name().equals("_id")) {
continue;
@@ -273,14 +273,18 @@ public class Lucene9Index extends Index {
searchResults.setHits(hits);
}
- private void collectFacets(final SearchRequest searchRequest, final IndexSearcher searcher,
- final FacetsCollector fc, final SearchResults searchResults) throws IOException {
+ private void collectFacets(
+ final SearchRequest searchRequest,
+ final IndexSearcher searcher,
+ final FacetsCollector fc,
+ final SearchResults searchResults)
+ throws IOException {
if (searchRequest.hasCounts()) {
final Map<String, Map<String, Number>> countsMap = new HashMap<String, Map<String, Number>>(
searchRequest.getCounts().size());
for (final String field : searchRequest.getCounts()) {
- final StringDocValuesReaderState state = new StringDocValuesReaderState(searcher.getIndexReader(),
- field);
+ final StringDocValuesReaderState state =
+ new StringDocValuesReaderState(searcher.getIndexReader(), field);
final StringValueFacetCounts counts = new StringValueFacetCounts(state, fc);
countsMap.put(field, collectFacets(counts, searchRequest.getTopN(), field));
}
@@ -290,7 +294,8 @@ public class Lucene9Index extends Index {
if (searchRequest.hasRanges()) {
final Map<String, Map<String, Number>> rangesMap = new HashMap<String, Map<String, Number>>(
searchRequest.getRanges().size());
- for (final Entry<String, List<DoubleRange>> entry : searchRequest.getRanges().entrySet()) {
+ for (final Entry<String, List<DoubleRange>> entry :
+ searchRequest.getRanges().entrySet()) {
final DoubleRangeFacetCounts counts = toDoubleRangeFacetCounts(fc, entry.getKey(), entry.getValue());
rangesMap.put(entry.getKey(), collectFacets(counts, searchRequest.getTopN(), entry.getKey()));
}
@@ -298,15 +303,17 @@ public class Lucene9Index extends Index {
}
}
- private DoubleRangeFacetCounts toDoubleRangeFacetCounts(final FacetsCollector fc, final String field,
- final List<DoubleRange> ranges) throws IOException {
- final org.apache.lucene.facet.range.DoubleRange[] luceneRanges = new org.apache.lucene.facet.range.DoubleRange[ranges
- .size()];
+ private DoubleRangeFacetCounts toDoubleRangeFacetCounts(
+ final FacetsCollector fc, final String field, final List<DoubleRange> ranges) throws IOException {
+ final org.apache.lucene.facet.range.DoubleRange[] luceneRanges =
+ new org.apache.lucene.facet.range.DoubleRange[ranges.size()];
for (int i = 0; i < luceneRanges.length; i++) {
final DoubleRange range = ranges.get(i);
luceneRanges[i] = new org.apache.lucene.facet.range.DoubleRange(
- range.getLabel(), range.getMin() != null ? range.getMin() : Double.NEGATIVE_INFINITY,
- range.isMinInclusive(), range.getMax() != null ? range.getMax() : Double.POSITIVE_INFINITY,
+ range.getLabel(),
+ range.getMin() != null ? range.getMin() : Double.NEGATIVE_INFINITY,
+ range.isMinInclusive(),
+ range.getMax() != null ? range.getMax() : Double.POSITIVE_INFINITY,
range.isMaxInclusive());
}
return new DoubleRangeFacetCounts(field, fc, luceneRanges);
@@ -355,8 +362,7 @@ public class Lucene9Index extends Index {
}
final Matcher m = SORT_FIELD_RE.matcher(sortString);
if (!m.matches()) {
- throw new WebApplicationException(
- sortString + " is not a valid sort parameter", Status.BAD_REQUEST);
+ throw new WebApplicationException(sortString + " is not a valid sort parameter", Status.BAD_REQUEST);
}
final boolean reverse = "-".equals(m.group(1));
switch (m.group(3)) {
@@ -365,8 +371,7 @@ public class Lucene9Index extends Index {
case "double":
return new SortedNumericSortField(m.group(2), SortField.Type.DOUBLE, reverse);
default:
- throw new WebApplicationException(
- m.group(3) + " is not a valid sort type", Status.BAD_REQUEST);
+ throw new WebApplicationException(m.group(3) + " is not a valid sort type", Status.BAD_REQUEST);
}
}
@@ -391,16 +396,16 @@ public class Lucene9Index extends Index {
}
if (field instanceof TextField) {
var f = (TextField) field;
- result.add(new org.apache.lucene.document.TextField(f.getName(), f.getValue(),
- f.isStore() ? Store.YES : Store.NO));
+ result.add(new org.apache.lucene.document.TextField(
+ f.getName(), f.getValue(), f.isStore() ? Store.YES : Store.NO));
} else if (field instanceof StringField) {
var f = (StringField) field;
- result.add(new org.apache.lucene.document.KeywordField(f.getName(), f.getValue(),
- f.isStore() ? Store.YES : Store.NO));
+ result.add(new org.apache.lucene.document.KeywordField(
+ f.getName(), f.getValue(), f.isStore() ? Store.YES : Store.NO));
} else if (field instanceof DoubleField) {
var f = (DoubleField) field;
- result.add(new org.apache.lucene.document.DoubleField(f.getName(), f.getValue(),
- f.isStore() ? Store.YES : Store.NO));
+ result.add(new org.apache.lucene.document.DoubleField(
+ f.getName(), f.getValue(), f.isStore() ? Store.YES : Store.NO));
} else if (field instanceof StoredField) {
var f = (StoredField) field;
var val = f.getValue();
@@ -505,5 +510,4 @@ public class Lucene9Index extends Index {
return "Lucene9Index [analyzer=" + analyzer + ", writer=" + writer + ", searcherManager=" + searcherManager
+ "]";
}
-
}
diff --git a/nouveau/src/main/java/org/apache/couchdb/nouveau/lucene9/Lucene9Module.java b/nouveau/src/main/java/org/apache/couchdb/nouveau/lucene9/Lucene9Module.java
index 8d5555692..06102de84 100644
--- a/nouveau/src/main/java/org/apache/couchdb/nouveau/lucene9/Lucene9Module.java
+++ b/nouveau/src/main/java/org/apache/couchdb/nouveau/lucene9/Lucene9Module.java
@@ -13,10 +13,9 @@
package org.apache.couchdb.nouveau.lucene9;
-import org.apache.lucene.search.Query;
-
import com.fasterxml.jackson.core.Version;
import com.fasterxml.jackson.databind.module.SimpleModule;
+import org.apache.lucene.search.Query;
public class Lucene9Module extends SimpleModule {
@@ -27,5 +26,4 @@ public class Lucene9Module extends SimpleModule {
addSerializer(Query.class, new QuerySerializer());
addDeserializer(Query.class, new QueryDeserializer());
}
-
}
diff --git a/nouveau/src/main/java/org/apache/couchdb/nouveau/lucene9/NouveauQueryParser.java b/nouveau/src/main/java/org/apache/couchdb/nouveau/lucene9/NouveauQueryParser.java
index 6aad65cd4..6516efc2c 100644
--- a/nouveau/src/main/java/org/apache/couchdb/nouveau/lucene9/NouveauQueryParser.java
+++ b/nouveau/src/main/java/org/apache/couchdb/nouveau/lucene9/NouveauQueryParser.java
@@ -16,7 +16,6 @@ package org.apache.couchdb.nouveau.lucene9;
import java.text.NumberFormat;
import java.text.ParseException;
import java.util.List;
-
import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.queryparser.flexible.core.QueryNodeException;
import org.apache.lucene.queryparser.flexible.core.QueryParserHelper;
@@ -116,7 +115,7 @@ public final class NouveauQueryParser extends QueryParserHelper {
if (node instanceof FieldQueryNode && !(node.getParent() instanceof RangeQueryNode)) {
final var fieldNode = (FieldQueryNode) node;
String text = fieldNode.getTextAsString();
- if (text.length() == 0) {
+ if (text.isEmpty()) {
return node;
}
final Number number;
@@ -159,8 +158,7 @@ public final class NouveauQueryParser extends QueryParserHelper {
final var lowerInclusive = termRangeNode.isLowerInclusive();
final var upperInclusive = termRangeNode.isUpperInclusive();
- return new PointRangeQueryNode(
- lowerNode, upperNode, lowerInclusive, upperInclusive, pointsConfig);
+ return new PointRangeQueryNode(lowerNode, upperNode, lowerInclusive, upperInclusive, pointsConfig);
}
return node;
@@ -175,7 +173,5 @@ public final class NouveauQueryParser extends QueryParserHelper {
protected List<QueryNode> setChildrenOrder(final List<QueryNode> children) throws QueryNodeException {
return children;
}
-
}
-
-} \ No newline at end of file
+}
diff --git a/nouveau/src/main/java/org/apache/couchdb/nouveau/lucene9/ParallelSearcherFactory.java b/nouveau/src/main/java/org/apache/couchdb/nouveau/lucene9/ParallelSearcherFactory.java
index 91fee1795..4553fa76b 100644
--- a/nouveau/src/main/java/org/apache/couchdb/nouveau/lucene9/ParallelSearcherFactory.java
+++ b/nouveau/src/main/java/org/apache/couchdb/nouveau/lucene9/ParallelSearcherFactory.java
@@ -15,7 +15,6 @@ package org.apache.couchdb.nouveau.lucene9;
import java.io.IOException;
import java.util.concurrent.Executor;
-
import org.apache.lucene.index.IndexReader;
import org.apache.lucene.search.IndexSearcher;
import org.apache.lucene.search.SearcherFactory;
@@ -32,5 +31,4 @@ public class ParallelSearcherFactory extends SearcherFactory {
public IndexSearcher newSearcher(final IndexReader reader, final IndexReader previousReader) throws IOException {
return new IndexSearcher(reader, executor);
}
-
}
diff --git a/nouveau/src/main/java/org/apache/couchdb/nouveau/lucene9/QueryDeserializer.java b/nouveau/src/main/java/org/apache/couchdb/nouveau/lucene9/QueryDeserializer.java
index 2e3b0278e..cc2cfc827 100644
--- a/nouveau/src/main/java/org/apache/couchdb/nouveau/lucene9/QueryDeserializer.java
+++ b/nouveau/src/main/java/org/apache/couchdb/nouveau/lucene9/QueryDeserializer.java
@@ -13,9 +13,14 @@
package org.apache.couchdb.nouveau.lucene9;
+import com.fasterxml.jackson.core.JsonParseException;
+import com.fasterxml.jackson.core.JsonParser;
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.DeserializationContext;
+import com.fasterxml.jackson.databind.JsonNode;
+import com.fasterxml.jackson.databind.deser.std.StdDeserializer;
import java.io.IOException;
import java.util.Iterator;
-
import org.apache.lucene.index.Term;
import org.apache.lucene.search.BooleanQuery;
import org.apache.lucene.search.FuzzyQuery;
@@ -27,13 +32,6 @@ import org.apache.lucene.search.RegexpQuery;
import org.apache.lucene.search.TermQuery;
import org.apache.lucene.search.WildcardQuery;
-import com.fasterxml.jackson.core.JsonParseException;
-import com.fasterxml.jackson.core.JsonParser;
-import com.fasterxml.jackson.core.JsonProcessingException;
-import com.fasterxml.jackson.databind.DeserializationContext;
-import com.fasterxml.jackson.databind.JsonNode;
-import com.fasterxml.jackson.databind.deser.std.StdDeserializer;
-
public class QueryDeserializer extends StdDeserializer<Query> {
public QueryDeserializer() {
@@ -107,15 +105,12 @@ public class QueryDeserializer extends StdDeserializer<Query> {
return new RegexpQuery(new Term(field, text));
}
case "term_range": {
-
}
case "point_range": {
-
}
case "match_all":
- return new MatchAllDocsQuery();
+ return new MatchAllDocsQuery();
}
throw new JsonParseException(parser, type + " not a supported query type");
}
-
}
diff --git a/nouveau/src/main/java/org/apache/couchdb/nouveau/lucene9/QuerySerializer.java b/nouveau/src/main/java/org/apache/couchdb/nouveau/lucene9/QuerySerializer.java
index df2f7a675..5e1d50871 100644
--- a/nouveau/src/main/java/org/apache/couchdb/nouveau/lucene9/QuerySerializer.java
+++ b/nouveau/src/main/java/org/apache/couchdb/nouveau/lucene9/QuerySerializer.java
@@ -13,8 +13,11 @@
package org.apache.couchdb.nouveau.lucene9;
+import com.fasterxml.jackson.core.JsonGenerationException;
+import com.fasterxml.jackson.core.JsonGenerator;
+import com.fasterxml.jackson.databind.SerializerProvider;
+import com.fasterxml.jackson.databind.ser.std.StdSerializer;
import java.io.IOException;
-
import org.apache.lucene.index.Term;
import org.apache.lucene.search.BooleanClause;
import org.apache.lucene.search.BooleanQuery;
@@ -29,11 +32,6 @@ import org.apache.lucene.search.TermQuery;
import org.apache.lucene.search.TermRangeQuery;
import org.apache.lucene.search.WildcardQuery;
-import com.fasterxml.jackson.core.JsonGenerationException;
-import com.fasterxml.jackson.core.JsonGenerator;
-import com.fasterxml.jackson.databind.SerializerProvider;
-import com.fasterxml.jackson.databind.ser.std.StdSerializer;
-
class QuerySerializer extends StdSerializer<Query> {
QuerySerializer() {
@@ -167,5 +165,4 @@ class QuerySerializer extends StdSerializer<Query> {
throw new JsonGenerationException(query.getClass() + " not supported", gen);
}
-
}
diff --git a/nouveau/src/main/java/org/apache/couchdb/nouveau/lucene9/SimpleAsciiFoldingAnalyzer.java b/nouveau/src/main/java/org/apache/couchdb/nouveau/lucene9/SimpleAsciiFoldingAnalyzer.java
index ae7e4c261..6b4c8c642 100644
--- a/nouveau/src/main/java/org/apache/couchdb/nouveau/lucene9/SimpleAsciiFoldingAnalyzer.java
+++ b/nouveau/src/main/java/org/apache/couchdb/nouveau/lucene9/SimpleAsciiFoldingAnalyzer.java
@@ -22,8 +22,7 @@ import org.apache.lucene.analysis.miscellaneous.ASCIIFoldingFilter;
class SimpleAsciiFoldingAnalyzer extends Analyzer {
- SimpleAsciiFoldingAnalyzer() {
- }
+ SimpleAsciiFoldingAnalyzer() {}
@Override
protected TokenStreamComponents createComponents(String fieldName) {
@@ -35,5 +34,4 @@ class SimpleAsciiFoldingAnalyzer extends Analyzer {
protected TokenStream normalize(String fieldName, TokenStream in) {
return new ASCIIFoldingFilter(new LowerCaseFilter(in));
}
-
}