2016-10-21 2 views
0

Ich habe ein Problem mit der Ausführung einer XQuery auf eXist-db. Ich habe eine Anwendung, die auf Tomcat läuft und Anfragen an eXist-db sendet, um bestimmte Dateien zu finden. Die Abfrage, die erzeugt wird, und gesendet wird, wie dies (I ~ für Fuzzy-Suche verwenden):Exist DB Lucene unscharfe Suche Problem

for $doc in collection('/db')//document/sender[ft:query(.,'test~')] 
let $score := ft:score($doc) 
order by $score descending 
return 
    base-uri($doc) 

und ich erhalte den folgenden Fehler auf dem Testserver:

org.exist.xquery.XPathException: exerr:ERROR Syntax error in Lucene query 
string: Cannot parse 'test~': Encountered " <FUZZY_SLOP> "~ "" at line 1, column 10. 
Was expecting one of: 
    <EOF> 
    <AND> ... 
    <OR> ... 
    <NOT> ... 
    "+" ... 
    "-" ... 
    <BAREOPER> ... 
    "(" ... 
    "*" ... 
    "^" ... 
    <QUOTED> ... 
    <TERM> ... 
    <PREFIXTERM> ... 
    <WILDTERM> ... 
    <REGEXPTERM> ... 
    "[" ... 
    "{" ... 
    <NUMBER> ... 

Allerdings, wenn ich die laufen gleiche Abfrage auf meinem lokalen Rechner, bekomme ich diesen Fehler nicht und stattdessen bekomme ich die erwarteten Ergebnisse. Was vermisse ich?

+0

Was ist die Version von eXist auf jeder Maschine? – joewiz

+0

Es ist das gleiche. Der neueste Stall (2.2). –

+0

Sehr seltsam. Ich würde definitiv nicht erwarten, diesen Fehler in 2.2 zu sehen. Können Sie versuchen, die fragliche Sammlung auf dem Computer neu zu indizieren, auf dem das Problem auftritt? Wenn Ihr Index für '/ db' definiert ist, dann:' xmldb: reindex ('/ db') '. Sehen Sie, ob das hilft. – joewiz

Antwort

1

Ich befürchte, dass es einen sehr feinen Unterschied zwischen der Abfrage gibt, die Ihre Anwendung an eXist-db sendet, und der Abfrage, wenn Sie sie auf einer lokalen eXist-db-Instanz ausführen.

Ich habe auch ein paar kleinere Aufräumarbeiten zu Ihrer Abfrage oben.