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
> >>
> >>
>

Reply via email to