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());
+    }
 }

Reply via email to