Hi, I think this behavior is clearly related to APIs. As fulltext search etc. will be integrated into cypher directly in a future version of Neo4j, I'm not sure how much work we will be able to do in this area. You might want to raise this as a github issue about this API issue.
I had those nasty lucene execptions (like NPE) too e.g. when you forget a closing quote or have quoted strings and wildcards in the same query. Best probably to really control the construction of those lucene strings. Perhaps with a DSL like QueryDSL for lucene, if that makes any sense for you? Cheers, Michael On Thu, Mar 27, 2014 at 3:17 PM, M. David Allen <[email protected]>wrote: > I'm attempting to implement a quite simple fuzzy match using a lucene > index. I'm running into multiple issues surrounding exceptions thrown by > Lucene, and how neo4j interacts with them. > > Sometimes, lucene will throw mysterious NullPointerExceptions which > propogate all the way up. These are quite frustrating, since there's > really nowhere to go; no indication of what's wrong with the syntax. > Example reference: > https://stackoverflow.com/questions/22637914/overcoming-nullpointerexception-on-cypher-lucene-query > > > Other times, lucene exceptions get transformed into RuntimeExceptions, > when certain syntax mistakes are made (example below, with syntax mistake > illustrated). > > The execute() method on an ExecutionEngine object has a signature which > includes the possibility of throwing a CypherException. Is there a reason > these things don't get swept into CypherExceptions (optionally/hopefully > with informative messages about what went wrong)? > > My immediate functionality issue is that I'm finding if I run a lucene > query such as name:Chain~ then this query will fail to return nodes whose > name is things like "Chain: 3" and "Chain: 1". I'm more than happy to RTFM > if someone can point me to the appropriate reference, but shouldn't there > be a match there? The design concern is just that I'm having a bit of a > hard time with lucene query because lucene will sometimes fail with no > message at all other than NullPointerException. This necessitates special > handling, above/beyond handling of CypherException, which is possibly to be > expected. > > > > java.lang.RuntimeException: org.apache.lucene.queryParser.ParseException: > Cannot parse 'name:Chain:~': Encountered " ":" ": "" at line 1, column 10. > Was expecting one of: > <EOF> > <AND> ... > <OR> ... > <NOT> ... > "+" ... > "-" ... > <BAREOPER> ... > "(" ... > "*" ... > "^" ... > <QUOTED> ... > <TERM> ... > <FUZZY_SLOP> ... > <PREFIXTERM> ... > <WILDTERM> ... > "[" ... > "{" ... > <NUMBER> ... > > at org.neo4j.index.impl.lucene.IndexType.query(IndexType.java:307) > at org.neo4j.index.impl.lucene.LuceneIndex.query(LuceneIndex.java:251) > at org.neo4j.index.impl.lucene.LuceneIndex.query(LuceneIndex.java:263) > at > org.neo4j.kernel.impl.coreapi.AbstractAutoIndexerImpl$ReadOnlyIndexToIndexAdapter.query(AbstractAutoIndexerImpl.java:249) > at > org.neo4j.cypher.internal.spi.v2_0.TransactionBoundExecutionContext$NodeOperations.indexQuery(TransactionBoundExecutionContext.scala:166) > > -- > You received this message because you are subscribed to the Google Groups > "Neo4j" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > For more options, visit https://groups.google.com/d/optout. > -- You received this message because you are subscribed to the Google Groups "Neo4j" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/d/optout.
