Skip to content

Commit df1c7c0

Browse files
authored
Merge pull request #2392 from tuurma/develop-5.0.0
(5.0.0) Fix lucene term range queries
2 parents 8766147 + 97c5a99 commit df1c7c0

File tree

3 files changed

+23
-1
lines changed

3 files changed

+23
-1
lines changed

extensions/indexes/lucene/src/org/exist/indexing/lucene/LuceneUtil.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -146,6 +146,8 @@ public static void extractTerms(final Query query, final Map<Object, Query> term
146146
extractTermsFromPrefix((PrefixQuery) query, terms, reader, includeFields);
147147
} else if (query instanceof PhraseQuery) {
148148
extractTermsFromPhrase((PhraseQuery) query, terms, includeFields);
149+
} else if (query instanceof TermRangeQuery) {
150+
extractTermsFromTermRange((TermRangeQuery) query, terms, reader, includeFields);
149151
} else {
150152
// fallback to Lucene's Query.extractTerms if none of the
151153
// above matches
@@ -203,6 +205,10 @@ private static void extractTermsFromPhrase(final PhraseQuery query, final Map<Ob
203205
}
204206
}
205207

208+
private static void extractTermsFromTermRange(final TermRangeQuery query, final Map<Object, Query> terms, final IndexReader reader, boolean includeFields) throws IOException {
209+
TERM_EXTRACTOR.extractTerms(query, terms, reader, includeFields);
210+
}
211+
206212
private static Query rewrite(final MultiTermQuery query, final IndexReader reader) throws IOException {
207213
query.setRewriteMethod(MultiTermQuery.CONSTANT_SCORE_AUTO_REWRITE_DEFAULT);
208214
return query.rewrite(reader);

extensions/indexes/lucene/test/src/xquery/lucene/plain-ft-functions.xml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -146,4 +146,11 @@
146146
]]></code>
147147
<expected>another foobar title</expected>
148148
</test>
149+
<test output="text" >
150+
<task>Test Index 7 - search term range (resulted in UnsupportedOperationException)</task>
151+
<code><![CDATA[
152+
count( ft:search("/db/binary/", "para:[even TO foobaar]")//@uri )
153+
]]></code>
154+
<expected>3</expected>
155+
</test>
149156
</TestSet>

extensions/indexes/lucene/test/src/xquery/lucene/queries.xml

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,16 @@
7474
<remove-collection collection="/db/lucene"/>
7575
<remove-document collection="/db/system/config/db/lucene" name="collection.xconf"/>
7676
</tearDown>
77-
<!-- Following axis tests -->
77+
<test output="xml">
78+
<task>Term range query</task>
79+
<code>
80+
declare namespace tei="http://www.tei-c.org/ns/1.0";
81+
82+
doc("/db/lucene/text1.xml")//p[ft:query(., 'eins TO zwei')]</code>
83+
<expected>
84+
<p>Eins zwei drei vier zwei fünf sechs.</p>
85+
</expected>
86+
</test>
7887
<test output="xml">
7988
<task>Case sensitivity</task>
8089
<code> for $hit in doc("/db/lucene/text1.xml")//p[ft:query(., 'Eins')] return $hit </code>

0 commit comments

Comments
 (0)