Both of your comments are pertinent to the fact that I have not used Lucene with Jena.
On Thu, Jun 12, 2014 at 4:25 PM, Willie <[email protected]> wrote: > 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. > I can't say. I also would not try to, in this case. I expect performance would be better using the filter. > 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. > As I said, I have not used Lucene on Jena, so I had to guess at what the original query was doing. From your response, I'm guessing that the list + "text:query" was the marker for the magic property (I figured Rob or Andy would clear it up). So now that I know what part was the magic property, the WHERE clause would be the very simple: ?s rdfs:label ?label FILTER regex(?label, "^?has", "i") Paul > 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 > >> > >> >
