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