This is an automated email from the ASF dual-hosted git repository.
codeferret pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/jena.git
The following commit(s) were added to refs/heads/master by this push:
new 9058944 Fix JENA-1777 (#627)
9058944 is described below
commit 90589442972c7e03774f3f713c85da1dc4a6e75a
Author: Chris Tomlinson <[email protected]>
AuthorDate: Thu Nov 7 10:15:22 2019 -0600
Fix JENA-1777 (#627)
* fix lds-pdi #164 : correct effectiveFIeld, add lang highlight test
* remove unused parameter, useDocLang
---
.../apache/jena/query/text/TextIndexLucene.java | 6 +--
...TestDatasetWithLuceneMultilingualTextIndex.java | 10 ++---
.../jena/query/text/TestTextHighlighting.java | 43 ++++++++++++++++++++++
3 files changed, 51 insertions(+), 8 deletions(-)
diff --git
a/jena-text/src/main/java/org/apache/jena/query/text/TextIndexLucene.java
b/jena-text/src/main/java/org/apache/jena/query/text/TextIndexLucene.java
index e2bbb25..796a46d 100644
--- a/jena-text/src/main/java/org/apache/jena/query/text/TextIndexLucene.java
+++ b/jena-text/src/main/java/org/apache/jena/query/text/TextIndexLucene.java
@@ -648,7 +648,7 @@ public class TextIndexLucene implements TextIndex {
return sb.toString();
}
- private List<TextHit> highlightResults(ScoreDoc[] sDocs, IndexSearcher
indexSearcher, Query query, List<String> fields, String highlight, boolean
useDocLang, String queryLang)
+ private List<TextHit> highlightResults(ScoreDoc[] sDocs, IndexSearcher
indexSearcher, Query query, List<String> fields, String highlight, String
queryLang)
throws IOException, InvalidTokenOffsetsException {
List<TextHit> results = new ArrayList<>() ;
@@ -670,7 +670,7 @@ public class TextIndexLucene implements TextIndex {
Node prop = props.isEmpty() ? null : props.iterator().next(); //
pick one - should be only one normally
String docLang = doc.get(docDef.getLangField()) ;
- String effectiveField = useDocLang ? field + "_" +
Util.getEffectiveLang(docLang, queryLang) : field;
+ String effectiveField = queryLang != null ? field + "_" +
Util.getEffectiveLang(docLang, queryLang) : field;
log.trace("highlightResults[{}]: {}, field: {}, lexical: {},
docLang: {}, effectiveField: {}", sd.doc, doc, field, lexical, docLang,
effectiveField) ;
if (lexical != null) {
TokenStream tokenStream =
indexAnalyzer.tokenStream(effectiveField, lexical);
@@ -803,7 +803,7 @@ public class TextIndexLucene implements TextIndex {
}
if (highlight != null) {
- return highlightResults(sDocs, indexSearcher, query, textFields,
highlight, usingSearchFor, lang);
+ return highlightResults(sDocs, indexSearcher, query, textFields,
highlight, lang);
} else {
return simpleResults(sDocs, indexSearcher, query, textFields);
}
diff --git
a/jena-text/src/test/java/org/apache/jena/query/text/TestDatasetWithLuceneMultilingualTextIndex.java
b/jena-text/src/test/java/org/apache/jena/query/text/TestDatasetWithLuceneMultilingualTextIndex.java
index 18acda8..66b8a50 100644
---
a/jena-text/src/test/java/org/apache/jena/query/text/TestDatasetWithLuceneMultilingualTextIndex.java
+++
b/jena-text/src/test/java/org/apache/jena/query/text/TestDatasetWithLuceneMultilingualTextIndex.java
@@ -66,16 +66,15 @@ public class TestDatasetWithLuceneMultilingualTextIndex
extends AbstractTestData
" .",
"",
":dataset",
- " a ja:RDFDataset ;",
- " ja:defaultGraph :graph ;",
- ".",
- ":graph",
- " a ja:MemoryModel ;",
+ " a tdb:DatasetTDB ;",
+ " tdb:location \"--mem--\" ;",
+ " tdb:unionDefaultGraph true ;",
".",
"",
":indexLucene",
" a text:TextIndexLucene ;",
" text:directory \"mem\" ;",
+ " text:storeValues true ;",
" text:multilingualSupport true ;",
" text:entityMap :entMap ;",
" .",
@@ -85,6 +84,7 @@ public class TestDatasetWithLuceneMultilingualTextIndex
extends AbstractTestData
" text:entityField \"uri\" ;",
" text:defaultField \"label\" ;",
" text:langField \"lang\" ;",
+ " text:graphField \"graph\" ;",
" text:map (",
" [ text:field \"label\" ; text:predicate
rdfs:label ]",
" [ text:field \"comment\" ; text:predicate
rdfs:comment ]",
diff --git
a/jena-text/src/test/java/org/apache/jena/query/text/TestTextHighlighting.java
b/jena-text/src/test/java/org/apache/jena/query/text/TestTextHighlighting.java
index 53ef3ae..3c6c253 100644
---
a/jena-text/src/test/java/org/apache/jena/query/text/TestTextHighlighting.java
+++
b/jena-text/src/test/java/org/apache/jena/query/text/TestTextHighlighting.java
@@ -59,6 +59,7 @@ public class TestTextHighlighting extends
AbstractTestDatasetWithTextIndexBase {
static {
SPEC = StrUtils.strjoinNL(
"prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> ",
+ "prefix skos: <http://www.w3.org/2004/02/skos/core#> ",
"prefix ja: <http://jena.hpl.hp.com/2005/11/Assembler#>
",
"prefix tdb: <http://jena.hpl.hp.com/2008/tdb#>",
"prefix text: <http://jena.apache.org/text#>",
@@ -84,6 +85,7 @@ public class TestTextHighlighting extends
AbstractTestDatasetWithTextIndexBase {
" a text:TextIndexLucene ;",
" text:directory \"mem\" ;",
" text:storeValues true ;",
+ " text:multilingualSupport true ;",
" text:entityMap :entMap ;",
" .",
"",
@@ -96,6 +98,7 @@ public class TestTextHighlighting extends
AbstractTestDatasetWithTextIndexBase {
" text:map (",
" [ text:field \"label\" ; text:predicate
rdfs:label ]",
" [ text:field \"comment\" ; text:predicate
rdfs:comment ]",
+ " [ text:field \"prefLabel\" ; text:predicate
skos:prefLabel ]",
" ) ."
);
}
@@ -235,4 +238,44 @@ public class TestTextHighlighting extends
AbstractTestDatasetWithTextIndexBase {
assertNotNull(value);
assertEquals(NodeFactory.createLiteral("bar <em
class='hilite'>testResultOne</em> barfoo foo"), value.asNode());
}
+
+ @Test
+ public void testTextQueryPFHighlighting3() {
+ final String turtleA = StrUtils.strjoinNL(
+ TURTLE_PROLOG,
+ "<" + RESOURCE_BASE + "testResultOneInModelA>",
+ " rdfs:label 'bar testResultOne barfoo foo'@en",
+ ".",
+ "<" + RESOURCE_BASE + "testResultTwoInModelA>",
+ " rdfs:label 'bar testResultTwo barfoo foo'@en",
+ ".",
+ "<" + RESOURCE_BASE + "testResultThreeInModelA>",
+ " rdfs:label 'bar testResultThree barfoo foo'@en",
+ "."
+ );
+ putTurtleInModel(turtleA, "http://example.org/modelA") ;
+ final String turtleB = StrUtils.strjoinNL(
+ TURTLE_PROLOG,
+ "<" + RESOURCE_BASE + "testResultOneInModelB>",
+ " rdfs:label 'bar testResultOne barfoo foo'@en",
+ "."
+ );
+ putTurtleInModel(turtleB, "http://example.org/modelB") ;
+ String queryString = StrUtils.strjoinNL(
+ QUERY_PROLOG,
+ "SELECT ?s ?lit",
+ "WHERE {",
+ " (?s ?sc ?lit ?g) text:query ( rdfs:label
'testResultThree'@en 10 \"highlight:\") . ",
+ "}"
+ );
+ Set<String> expectedURIs = new HashSet<>() ;
+ expectedURIs.addAll( Arrays.asList(RESOURCE_BASE +
"testResultThreeInModelA")) ;
+
+ Map<String, Literal> literals = doTestSearchWithLiterals(queryString,
expectedURIs) ;
+ assertEquals(1, literals.size());
+
+ Literal value = literals.get(RESOURCE_BASE +
"testResultThreeInModelA");
+ assertNotNull(value);
+ assertEquals(NodeFactory.createLiteral("bar ↦testResultThree↤ barfoo
foo", "en"), value.asNode());
+ }
}