Author: tommaso
Date: Tue May  8 13:29:02 2018
New Revision: 1831180

URL: http://svn.apache.org/viewvc?rev=1831180&view=rev
Log:
OAK-7365 - using simple query parser to create queries from translation strings

Modified:
    jackrabbit/oak/trunk/oak-search-mt/pom.xml
    
jackrabbit/oak/trunk/oak-search-mt/src/main/java/org/apache/jackrabbit/oak/plugins/index/mt/MTFulltextQueryTermsProvider.java

Modified: jackrabbit/oak/trunk/oak-search-mt/pom.xml
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-search-mt/pom.xml?rev=1831180&r1=1831179&r2=1831180&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-search-mt/pom.xml (original)
+++ jackrabbit/oak/trunk/oak-search-mt/pom.xml Tue May  8 13:29:02 2018
@@ -123,6 +123,12 @@
             <artifactId>joshua-incubating</artifactId>
             <version>6.1</version>
         </dependency>
+        <dependency>
+            <groupId>org.apache.lucene</groupId>
+            <artifactId>lucene-queryparser</artifactId>
+            <version>${lucene.version}</version>
+            <scope>provided</scope>
+        </dependency>
 
         <!-- Logging -->
         <dependency>

Modified: 
jackrabbit/oak/trunk/oak-search-mt/src/main/java/org/apache/jackrabbit/oak/plugins/index/mt/MTFulltextQueryTermsProvider.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-search-mt/src/main/java/org/apache/jackrabbit/oak/plugins/index/mt/MTFulltextQueryTermsProvider.java?rev=1831180&r1=1831179&r2=1831180&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-search-mt/src/main/java/org/apache/jackrabbit/oak/plugins/index/mt/MTFulltextQueryTermsProvider.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-search-mt/src/main/java/org/apache/jackrabbit/oak/plugins/index/mt/MTFulltextQueryTermsProvider.java
 Tue May  8 13:29:02 2018
@@ -24,7 +24,11 @@ import java.util.List;
 import java.util.Set;
 
 import org.apache.jackrabbit.oak.plugins.index.lucene.FieldNames;
+import org.apache.jackrabbit.oak.plugins.index.lucene.IndexNode;
+import org.apache.jackrabbit.oak.plugins.index.lucene.IndexNodeManager;
+import org.apache.jackrabbit.oak.plugins.index.lucene.OakAnalyzer;
 import 
org.apache.jackrabbit.oak.plugins.index.lucene.spi.FulltextQueryTermsProvider;
+import 
org.apache.jackrabbit.oak.plugins.index.lucene.util.IndexDefinitionBuilder;
 import org.apache.jackrabbit.oak.spi.state.NodeState;
 import org.apache.joshua.decoder.Decoder;
 import org.apache.joshua.decoder.StructuredTranslation;
@@ -34,10 +38,14 @@ import org.apache.lucene.analysis.Analyz
 import org.apache.lucene.analysis.TokenStream;
 import org.apache.lucene.analysis.tokenattributes.CharTermAttribute;
 import org.apache.lucene.index.Term;
+import org.apache.lucene.queryparser.classic.ParseException;
+import org.apache.lucene.queryparser.classic.QueryParser;
+import org.apache.lucene.queryparser.simple.SimpleQueryParser;
 import org.apache.lucene.search.BooleanClause;
 import org.apache.lucene.search.BooleanQuery;
 import org.apache.lucene.search.Query;
 import org.apache.lucene.search.TermQuery;
+import org.apache.lucene.util.Version;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -52,15 +60,18 @@ public class MTFulltextQueryTermsProvide
     private final Decoder decoder;
     private final Set<String> nodeTypes;
     private final float minScore;
+    private final SimpleQueryParser qp;
 
     public MTFulltextQueryTermsProvider(Decoder decoder, Set<String> 
nodeTypes, float minScore) {
         this.decoder = decoder;
         this.nodeTypes = nodeTypes;
         this.minScore = minScore;
+        this.qp = new SimpleQueryParser(new OakAnalyzer(Version.LUCENE_47), 
FieldNames.FULLTEXT);
     }
 
     @Override
     public Query getQueryTerm(String text, Analyzer analyzer, NodeState 
indexDefinition) {
+
         BooleanQuery query = new BooleanQuery();
         try {
             Sentence sentence = new Sentence(text, text.hashCode(), 
decoder.getJoshuaConfiguration());
@@ -105,7 +116,7 @@ public class MTFulltextQueryTermsProvide
             log.debug("translation {} has score {}", translationString, 
translationScore);
             if (translationScore > minScore) {
                 log.debug("translation score for {} is {}", 
translationString, translationScore);
-                query.add(new BooleanClause(new TermQuery(new 
Term(FieldNames.FULLTEXT, translationString)),
+                query.add(new 
BooleanClause(qp.createPhraseQuery(FieldNames.FULLTEXT, translationString),
                         BooleanClause.Occur.SHOULD));
                 log.debug("added query for translated phrase {}", 
translationString);
                 List<String> translationTokens = st.getTranslationTokens();
@@ -114,8 +125,8 @@ public class MTFulltextQueryTermsProvide
                 for (List<Integer> wa : st.getTranslationWordAlignments()) {
                     if (!wa.isEmpty()) {
                         String translatedTerm = translationTokens.get(i);
-                        query.add(new BooleanClause(new TermQuery(new 
Term(FieldNames.FULLTEXT, translatedTerm)),
-                                BooleanClause.Occur.SHOULD));
+                        Query termQuery = qp.parse(translatedTerm);
+                        query.add(new BooleanClause(termQuery, 
BooleanClause.Occur.SHOULD));
                         log.debug("added query for translated token {}", 
translatedTerm);
                     }
                     i++;


Reply via email to