DCausse has uploaded a new change for review. ( 
https://gerrit.wikimedia.org/r/341317 )

Change subject: Add support for SynonymQuery
......................................................................

Add support for SynonymQuery

This lucene query was missed but it's now used by elasticsearch query builders.

closes #28

Change-Id: I7e4e4b6de1b2c6808fe57351ee3406ecae58a44d
---
M 
experimental-highlighter-lucene/src/main/java/org/wikimedia/highlighter/experimental/lucene/QueryFlattener.java
M 
experimental-highlighter-lucene/src/test/java/org/wikimedia/highlighter/experimental/lucene/QueryFlattenerTest.java
2 files changed, 44 insertions(+), 26 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/search/highlighter 
refs/changes/17/341317/1

diff --git 
a/experimental-highlighter-lucene/src/main/java/org/wikimedia/highlighter/experimental/lucene/QueryFlattener.java
 
b/experimental-highlighter-lucene/src/main/java/org/wikimedia/highlighter/experimental/lucene/QueryFlattener.java
index 4ddc2e7..4a9ffc0 100644
--- 
a/experimental-highlighter-lucene/src/main/java/org/wikimedia/highlighter/experimental/lucene/QueryFlattener.java
+++ 
b/experimental-highlighter-lucene/src/main/java/org/wikimedia/highlighter/experimental/lucene/QueryFlattener.java
@@ -1,10 +1,5 @@
 package org.wikimedia.highlighter.experimental.lucene;
 
-import java.io.IOException;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
-
 import org.apache.lucene.index.IndexReader;
 import org.apache.lucene.index.Term;
 import org.apache.lucene.queries.CommonTermsQuery;
@@ -22,6 +17,7 @@
 import org.apache.lucene.search.PrefixQuery;
 import org.apache.lucene.search.Query;
 import org.apache.lucene.search.RegexpQuery;
+import org.apache.lucene.search.SynonymQuery;
 import org.apache.lucene.search.TermQuery;
 import org.apache.lucene.search.WildcardQuery;
 import org.apache.lucene.search.spans.SpanNearQuery;
@@ -35,6 +31,11 @@
 import org.apache.lucene.util.automaton.Automaton;
 import org.apache.lucene.util.automaton.LevenshteinAutomata;
 import org.apache.lucene.util.automaton.Operations;
+
+import java.io.IOException;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
 
 /**
  * Flattens {@link Query}s similarly to Lucene's FieldQuery.
@@ -144,6 +145,8 @@
             flattenQuery((PrefixQuery) query, pathBoost, sourceOverride, 
reader, callback);
         } else if (query instanceof CommonTermsQuery) {
             flattenQuery((CommonTermsQuery) query, pathBoost, sourceOverride, 
reader, callback);
+        } else if (query instanceof SynonymQuery) {
+            flattenQuery((SynonymQuery) query, pathBoost, sourceOverride, 
reader, callback);
         } else if (!flattenUnknown(query, pathBoost, sourceOverride, reader, 
callback)) {
             Query newRewritten = rewriteQuery(query, pathBoost, 
sourceOverride, reader);
             if (newRewritten != query) {
@@ -327,6 +330,13 @@
         callback.flattened(query.getAutomaton(), pathBoost, source.hashCode());
     }
 
+    protected void flattenQuery(SynonymQuery query, float pathBoost, Object 
sourceOverride,
+                                IndexReader reader, Callback callback) {
+        for(Term t : query.getTerms()) {
+            callback.flattened(t.bytes(), pathBoost, sourceOverride);
+        }
+    }
+
     protected void flattenQuery(PrefixQuery query, float pathBoost, Object 
sourceOverride,
             IndexReader reader, Callback callback) {
         flattenPrefixQuery(query.getPrefix().bytes(), pathBoost, 
sourceOverride,
diff --git 
a/experimental-highlighter-lucene/src/test/java/org/wikimedia/highlighter/experimental/lucene/QueryFlattenerTest.java
 
b/experimental-highlighter-lucene/src/test/java/org/wikimedia/highlighter/experimental/lucene/QueryFlattenerTest.java
index ad93d7c..d0a8f9a 100644
--- 
a/experimental-highlighter-lucene/src/test/java/org/wikimedia/highlighter/experimental/lucene/QueryFlattenerTest.java
+++ 
b/experimental-highlighter-lucene/src/test/java/org/wikimedia/highlighter/experimental/lucene/QueryFlattenerTest.java
@@ -1,25 +1,6 @@
 package org.wikimedia.highlighter.experimental.lucene;
 
-import static org.hamcrest.Matchers.not;
-import static org.mockito.Matchers.any;
-import static org.mockito.Matchers.anyFloat;
-import static org.mockito.Matchers.anyInt;
-import static org.mockito.Matchers.anyString;
-import static org.mockito.Matchers.eq;
-import static org.mockito.Matchers.isNull;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.never;
-import static org.mockito.Mockito.times;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.when;
-import static 
org.wikimedia.highlighter.experimental.lucene.LuceneMatchers.recognises;
-
-import java.io.Closeable;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-
+import com.google.common.collect.Lists;
 import org.apache.lucene.analysis.core.KeywordAnalyzer;
 import org.apache.lucene.document.Field;
 import org.apache.lucene.document.TextField;
@@ -37,6 +18,7 @@
 import org.apache.lucene.search.PrefixQuery;
 import org.apache.lucene.search.Query;
 import org.apache.lucene.search.RegexpQuery;
+import org.apache.lucene.search.SynonymQuery;
 import org.apache.lucene.search.TermQuery;
 import org.apache.lucene.search.WildcardQuery;
 import org.apache.lucene.store.Directory;
@@ -48,7 +30,25 @@
 import org.mockito.ArgumentCaptor;
 import org.wikimedia.highlighter.experimental.lucene.QueryFlattener.Callback;
 
-import com.google.common.collect.Lists;
+import java.io.Closeable;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+import static org.hamcrest.Matchers.not;
+import static org.mockito.Matchers.any;
+import static org.mockito.Matchers.anyFloat;
+import static org.mockito.Matchers.anyInt;
+import static org.mockito.Matchers.anyString;
+import static org.mockito.Matchers.eq;
+import static org.mockito.Matchers.isNull;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.never;
+import static org.mockito.Mockito.times;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+import static 
org.wikimedia.highlighter.experimental.lucene.LuceneMatchers.recognises;
 
 public class QueryFlattenerTest extends LuceneTestCase {
     private final List<Closeable> toClose = new ArrayList<>();
@@ -204,6 +204,14 @@
         verify(callback, never()).flattened(eq(baz.bytes()), anyFloat(), 
any(Object.class));
     }
 
+    @Test
+    public void testSynonym() {
+        Callback callback = mock(Callback.class);
+        new QueryFlattener().flatten(new SynonymQuery(bar, baz), null, 
callback);
+        verify(callback).flattened(bar.bytes(), 1f, null);
+        verify(callback).flattened(baz.bytes(), 1f, null);
+    }
+
     @SafeVarargs
     private final void flattenedToAutomatonThatMatches(Query query, 
Matcher<Automaton>... matchers) {
         Callback callback = mock(Callback.class);

-- 
To view, visit https://gerrit.wikimedia.org/r/341317
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I7e4e4b6de1b2c6808fe57351ee3406ecae58a44d
Gerrit-PatchSet: 1
Gerrit-Project: search/highlighter
Gerrit-Branch: master
Gerrit-Owner: DCausse <dcau...@wikimedia.org>

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to