2011-11-22 14 views
7

In solr voglio cercare un campo con numero negativo come nodeId: -1. in schema.xml, ho definito in questo modo: < campo name = tipo "nodeId" = "int" indicizzato = "true" memorizzato = "true" />come cercare il numero negativo in solr?

solr genera un errore quando l'uso "nodeId: - 1 "per cercare in questo modo: org.apache.lucene.queryParser.ParseException: Impossibile analizzare 'storeId: -1': Encountered" "-" "-" "alla riga 1, colonna 8. Si aspettava una delle seguenti:" ("..." * "... ... ... ... ..." ["..." {"... ...

Devo cercare con storeId: \ - 1 o storeId: "- 1" per ottenere risposta

ora la domanda è: Posso modificare qualsiasi file di configrazione di solr cercare senza caratteri di escape? O un altro modo per risolvere questo problema senza modificare il codice java. Grazie.

risposta

2

"-" è un carattere speciale per il parser di query, che viene utilizzato per contrassegnare alcune clausole come vietate. Se non vuoi sfuggire a questo personaggio, devi modificare il parser di query.

Si consiglia di provare allo raw query parser: q={!raw f=nodeId}-1 ma non ha alcuna funzionalità del parser di query predefinito. In realtà, il parser di query non elaborato consente solo di eseguire query a termine puro.

3

Personalmente ritengo che l'escaping corretto all'interno del codice Java sia il modo migliore. ClientUtils.escapeQueryChars sarebbe il metodo di scelta.

Problemi correlati