2 things here: 1. Below is the comment on org.apache.lucene.queryparser.flexible.standard.CommonQueryParserConfiguration.setLowercaseExpandedTerms. It does seem that what I want to do is possible. So I'm just curious I there is a way to access this functionality via Jena and it's free text search feature.
voidsetLowercaseExpandedTerms(boolean lowercaseExpandedTerms) Set to true to allow leading wildcard characters. When set, * or ? are allowed as the first character of a PrefixQuery and WildcardQuery. Note that this can produce very slow queries on big indexes. Default: false. 2. In the query you have suggested, I don't believe that the text:query manic property will bind anything to ?qlabel, making the use of text:query pointless. Cheers, Willie > On Jun 12, 2014, at 15:28, Paul Gearon <[email protected]> wrote: > > Forgot to mention.... The usual solution is to not use Lucene, and to use a > filter instead. > > I'm not familiar with using Lucene with Jena, but if it works in the way I > presume, then your WHERE clause becomes: > > ?s text:query (rdfs:label ?qlabel) ; > rdfs:label ?label > FILTER regex(?qlabel, "^?has", "i") > > Paul > > > >> On Thu, Jun 12, 2014 at 3:22 PM, Paul Gearon <[email protected]> wrote: >> >> As you say, Jena is using Lucene for indexing and searching here. If you >> check on Lucene querying you will see that it does not support using a >> wildcard as the first character. >> >> http://lucene.apache.org/core/2_9_4/queryparsersyntax.html >> >> The requirement is based on how Lucene looks up the indexes. In the worst >> case, you could try a union between the various options that you expect. >> >> Regards, >> Paul >> >> >> >>> On Thu, Jun 12, 2014 at 2:29 PM, Willie Milnor <[email protected]> wrote: >>> >>> Hello, >>> >>> Perhaps I'm missing something in the docs, but when I attempt to execute >>> the query below, I am receiving the error below that. It looks like I >>> could fix this if I could access the CommonQueryParserConfiguration used >>> for Lucene, but I don't see how to do that. Is there a way to do what I'm >>> trying, or is there another way to allow a wildcard as the first >>> character? >>> >>> >>> PREFIX text: <http://jena.apache.org/text#> >>> PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> >>> SELECT DISTINCT ?s ?label >>> WHERE { >>> { >>> ?s text:query (rdfs:label "?has*") ; >>> rdfs:label ?label . >>> } >>> } >>> ORDER BY ?label >>> >>> >>> Caused by: org.apache.lucene.queryparser.classic.ParseException: Cannot >>> parse 'string:?has*': '*' or '?' not allowed as first character in >>> WildcardQuery >>> at >>> >>> org.apache.lucene.queryparser.classic.QueryParserBase.parse(QueryParserBase.java:126) >>> at >>> >>> org.apache.jena.query.text.TextIndexLucene.query$(TextIndexLucene.java:259) >>> at >>> org.apache.jena.query.text.TextIndexLucene.query(TextIndexLucene.java:244) >>> ... 34 more >>> Caused by: org.apache.lucene.queryparser.classic.ParseException: '*' or >>> '?' >>> not allowed as first character in WildcardQuery >>> at >>> >>> org.apache.lucene.queryparser.classic.QueryParserBase.getWildcardQuery(QueryParserBase.java:1001) >>> at >>> >>> org.apache.lucene.queryparser.classic.QueryParserBase.handleBareTokenQuery(QueryParserBase.java:1099) >>> at >>> >>> org.apache.lucene.queryparser.classic.QueryParser.Term(QueryParser.java:358) >>> at >>> >>> org.apache.lucene.queryparser.classic.QueryParser.Clause(QueryParser.java:257) >>> at >>> >>> org.apache.lucene.queryparser.classic.QueryParser.Query(QueryParser.java:181) >>> at >>> >>> org.apache.lucene.queryparser.classic.QueryParser.TopLevelQuery(QueryParser.java:170) >>> at >>> >>> org.apache.lucene.queryparser.classic.QueryParserBase.parse(QueryParserBase.java:121) >>> -- >>> Cheers, >>> Willie >> >>
