2013-07-22 6 views
8

Wenn ich versuche, etwas wie „Abhilfe/fix“ im Lucene suchen, wirft es diesen Fehler:Lucene queryparser mit „/“ in Abfragekriterien

org.apache.lucene.queryparser.classic.ParseException: Cannot parse 'workaround/fix': Lexical error at line 1, column 15. Encountered: <EOF> after : "/fix" 
    at org.apache.lucene.queryparser.classic.QueryParserBase.parse(QueryParserBase.java:131) 
    at pi.lucengine.LucIndex.main(LucIndex.java:112) 
Caused by: org.apache.lucene.queryparser.classic.TokenMgrError: Lexical error at line 1, column 15. Encountered: <EOF> after : "/fix" 
    at org.apache.lucene.queryparser.classic.QueryParserTokenManager.getNextToken(QueryParserTokenManager.java:1133) 
    at org.apache.lucene.queryparser.classic.QueryParser.jj_scan_token(QueryParser.java:599) 
    at org.apache.lucene.queryparser.classic.QueryParser.jj_3R_2(QueryParser.java:482) 
    at org.apache.lucene.queryparser.classic.QueryParser.jj_3_1(QueryParser.java:489) 
    at org.apache.lucene.queryparser.classic.QueryParser.jj_2_1(QueryParser.java:475) 
    at org.apache.lucene.queryparser.classic.QueryParser.Clause(QueryParser.java:226) 
    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) 

Dies sind meine Linien 111 und 112:

QueryParser parser = new QueryParser(Version.LUCENE_43, field, analyzer); 
Query query = parser.parse(newLine); 

Was muss ich tun, damit das "/" analysiert wird?

Antwort

2

Ich stieß auf ein ähnliches Problem bei der Verwendung von "/" in Lucene-Abfragen aus der elastischen Suche Kibana Dashboard. Ich entkam den '/' Zeichen, wie in der Dokumentation angegeben, und immer noch keinen Erfolg. Ich denke, das hängt mit dem Template-Fehler zusammen, der hier gemeldet wird: https://github.com/elastic/kibana/issues/789. Noch nicht sicher, werden aktualisiert, wenn wir die logstash Komponenten

0

aktualisieren hatte ich einen Fall, in dem, wenn sie mit Wildcard Schrägstrich es wäre einfach kein Ergebnis zurückgeben, auch wenn sie entkommen:

+(*16/17*) 
+(*16\/17*) 

Die Lösung war Doppelzitat hinzufügen:

+("*16/17*") 
+("*16\/17*")