Hi Andy,

The "Lucene query: {} ({})” message is not coming out at all. I try a variety 
of queries, and other parameter settings and since the cache key is such that 
any change in query, limit, language snd such leads to another key I should see 
many such log statements.

In any event, I’ll look further into the matter since I’ll now fork jena and 
see what I can do regarding the highlighting.

Thanks,
Chris



> On Oct 23, 2017, at 3:31 PM, Andy Seaborne <[email protected]> wrote:
> 
> That all looks right.
> 
> Is the message not coming out at all or coming out once only?  I ask because 
> it is in a "getOrFill" so the Callable is only called when there is a cache 
> miss.
> 
>    Andy
> 
> On 22/10/17 18:22, Chris Tomlinson wrote:
>> Hello Andy,
>> Thank you for the reply. I’m apparently not facile with log4j.properties. 
>> I've tried several configurations and I'm only able to get the TextQueryPF 
>> log.debug() to fire:
>>> [2017-10-22 16:47:52] Fuseki     INFO  [1] POST 
>>> http://localhost:13180/fuseki/bdrcrw/query
>>> [2017-10-22 16:47:52] Fuseki     INFO  [1] POST /bdrcrw :: 'query' :: 
>>> [application/x-www-form-urlencoded charset=UTF-8] ?
>>> [2017-10-22 16:47:52] Fuseki     INFO  [1] Query = PREFIX : 
>>> <http://purl.bdrc.io/ontology/root#> PREFIX rdf: 
>>> <http://www.w3.org/1999/02/22-rdf-syntax-ns#> PREFIX rdfs: 
>>> <http://www.w3.org/2000/01/rdf-schema#> PREFIX owl: 
>>> <http://www.w3.org/2002/07/owl#> PREFIX adm: 
>>> <http://purl.bdrc.io/ontology/admin/> PREFIX bdo: 
>>> <http://purl.bdrc.io/ontology/core/> PREFIX bdr: 
>>> <http://purl.bdrc.io/resource/> PREFIX text: <http://jena.apache.org/text#> 
>>> PREFIX skos: <http://www.w3.org/2004/02/skos/core#> PREFIX lang: 
>>> <http://ontologi.es/lang/core#> PREFIX ad: 
>>> <http://schemas.talis.com/2005/address/schema#>  select ?s ?n ?sc where {   
>>> (?s1 ?sc ?lit) text:query (bdo:chunkContents "\"དགའ་རབ་རྡོ་རྗེ་\"") .   ?s 
>>> bdo:eTextHasChunk ?s1 .   ?s1 bdo:seqNum ?n . } limit 10
>>> [2017-10-22 16:47:52] TextQueryPF DEBUG Text query: "དགའ་རབ་རྡོ་རྗེ་" (-1)
>>> [2017-10-22 16:47:52] Fuseki     INFO  [1] 200 OK (423 ms)
>> I’ve tried a variety of configurations along the following lines:
>>> log4j.rootLogger=INFO, jena.plainstdout
>>> log4j.logger.org.apache.jena=INFO
>>> log4j.logger.org.apache.jena.fuseki=INFO
>>> log4j.logger.org.apache.jena.query.text=DEBUG
>>> log4j.logger.org.apache.jena.query.text.TextQueryPF=DEBUG
>>> log4j.logger.org.apache.jena.query.text.TextIndexLucene=DEBUG
>> As I understand, setting  log4j.logger.org.apache.jena=DEBUG should be 
>> sufficient (if too verbose) and setting 
>> log4j.logger.org.apache.jena.query.text=DEBUG should have enabled debug for 
>> any class in the package and I really thought 
>> log4j.logger.org.apache.jena.query.text.TextIndexLucene=DEBUG should have 
>> enabled debug level in TextIndexLucene specifically. Setting 
>> log4j.logger.org.apache.jena.query.text=DEBUG and 
>> log4j.logger.org.apache.jena.query.text.TextQueryPF=INFO indeed turns off 
>> the log.debug in TextQueryPF as I expected.
>> The code region containing the log.debug() in TextIndexLucene is:
>>> 
>>>         String queryString = textClause ;
>>>         if (langClause != null)
>>>             queryString = "(" + queryString + ") AND " + langClause ;
>>>         if (graphClause != null)
>>>             queryString = "(" + queryString + ") AND " + graphClause ;
>>> 
>>>         if ( log.isDebugEnabled())
>>>             log.debug("Lucene query: {} ({})", queryString,limit) ;
>>> 
>>>         IndexSearcher indexSearcher = new IndexSearcher(indexReader) ;
>>>         Query query = parseQuery(queryString, queryAnalyzer) ;
>>>         if ( limit <= 0 )
>>>             limit = MAX_N ;
>>>         ScoreDoc[] sDocs = indexSearcher.search(query, limit).scoreDocs ;
>>> 
>>>         List<TextHit> results = new ArrayList<>() ;
>> And I know that execution passes the log.isDebugEnabled and reaches the 
>> parseQuery() since I can inject a queryString with an error and see the 
>> stack trace where the ParseException is caught in the getOrFill().
>> As far as I can tell the log is setup in the same manner in TextQueryPF and 
>> TextIndexLucene:
>>> import org.slf4j.Logger ;
>>> import org.slf4j.LoggerFactory ;
>>> 
>>> /** property function that accesses a text index */
>>> public class TextQueryPF extends PropertyFunctionBase {
>>>     private static Logger log = LoggerFactory.getLogger(TextQueryPF.class) ;
>> and
>>> import org.slf4j.Logger ;
>>> import org.slf4j.LoggerFactory ;
>>> 
>>> public class TextIndexLucene implements TextIndex {
>>>     private static Logger          log      = 
>>> LoggerFactory.getLogger(TextIndexLucene.class) ;
>> What am I missing?
>> Thanks,
>> Chris
>>> On Oct 21, 2017, at 3:33 PM, Andy Seaborne <[email protected]> wrote:
>>> 
>>> 
>>> 
>>> On 20/10/17 20:00, Chris Tomlinson wrote:
>>>> Hi,
>>>> I’m interested in looking into whether and how it might be possible to 
>>>> incorporate Lucene highlighting into jena-text. I don’t see any other 
>>>> work, but perhaps others have dealt with the topic already. I was thinking 
>>>> of some sort of a 4th return parameter in the PF.
>>>> While examining the code I found an oddity. I was interested in seeing the 
>>>> final Lucene query created in TextIndexLucene via the log.debug at line 
>>>> 417 but it never fires even though the log.debug at line 249 in 
>>>> TextQueryPF produces expected output. I’m guessing that somehow the use of 
>>>> the lambda in getOrFill of the cache at line 267 of TextQueryPF somehow 
>>>> obscures the logging properties. Maybe that’s why there’s the commented 
>>>> out alternative that avoids the cache?
>>> 
>>> Because they are different loggers? As statics, they are as compiled, no 
>>> closure related.
>>> 
>>> TextIndexLucene.class and TextQueryPF.class respectively.
>>> 
>>> (I see the "no cache" code as a debugging remains - there was a cache issue 
>>> recently)
>>> 
>>>    Andy
>>> 
>>>> Thanks,
>>>> Chris

Reply via email to