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++;