2017-02-23 3 views
0

Ich bin neu bei Solr.Solr Suche mit einer einzigen runden Klammer funktioniert nicht

Ich versuche nach Datensätzen zu suchen, die einzelne runde Klammern entweder '(' oder ')' enthalten.

Die Abfrage für den Datensatz zu suchen ist wie folgt:

q=((name: (*\(abc*))) 

Die obige Abfrage bricht die Suche solr.

Ich bin entkommen das Zeichen() durch die folgende regex:

value = value.replace(/([()])/g, '\\$1'); 

Kann jemand bitte helfen, dieses Problem zu beheben?

+0

Grundsätzlich suchen nach enthält Abfrage mit Klammern. –

+1

Was meinen Sie mit "breaks the solr search"? Absturz, Fehler, null Treffer? Die Abfrage, die @Persimmonium vorschlägt, ist in Ordnung, also könnte Ihr Problem sein, dass Ihr Analysator Klammern entfernt. Überprüfen Sie dies, indem Sie eine 'name: known \) Wortsuche ausführen, gefolgt von' name: known \) word * '. Wenn der letzte keinen Treffer liefert, entfernt Ihr Analysator wahrscheinlich ')'. Sie können dies auch über _Analysis_ in der GUI tun, was Ihnen mehr sagt (und möglicherweise verwirrender ist). –

+0

Wie ich von Ihrer Frage verstehe, brauchen Sie nur '(' oder ')' nicht beides. Die folgende Abfrage würde dem Zweck 'name: * \ (* OR name: * \) * NOT name: * \ (* \) *' dienen –

Antwort

2

Ich bin nicht sehr gut mit der Regex erkennen Ich kann so nicht, was dort geschieht, aber diese solr Abfrage funktionieren sollte:

q=name:*\(abc* 

tut es nicht? Wie Sie sehen können, ist das einzige Zeichen, das in Ihrer Abfrage zu entkommen ist, (.) Muss auch maskiert sein, wenn Sie danach suchen.

Wie Sie sehen können, in the lucene doc. Aber ich verstehe in Ihrem Beispiel alle) sind nur ein Teil der Sprache.