2016-12-10 3 views
7

Ich betreibe einen Elasticsearch Server.Filter oder Analysator, um englische Zahlen und arabische Ziffern gleichzusetzen

Ich möchte eine Abfrage wie fifty two meters, um ein Dokument mit 52 meters übereinstimmen.

Gibt es ein Plugin (Filter oder Analysator), das Zahlenwörter in arabische Ziffern umwandelt?

+0

Sie könnten versuchen, einen [Synonym Token Filter] (https://www.elastic.co/guide/en/elasticsearch/reference/current/analysis-synonym-tokenfilter.html) zu verwenden, um alle Dinkel zu out-Nummer mit ihrer numerischen Entsprechung. – Val

+0

@ Val, stimmt, aber es würde sehr lang werden. Zum Beispiel müsste ich das Synonym "siebenhundertsechsundzwanzig => 726" angeben. Ich habe auf einige programmatische Lösungen gehofft, die in ein ES-Plugin eingebettet sind, ähnlich wie PyPIs [num2words] (https://pypi.python.org/pypi/num2words). – Garrett

+1

Es gibt ein paar Projekte, die das in Java machen ([hier] (https://github.com/gulimran/num2words)), also wäre es nicht zu schwierig, einen Token-Filter zu erstellen, der ihn nutzt . Ich werde versuchen, es zu Mittagessen zu bekommen, wenn ich Zeit habe :-) – Val

Antwort

4

Momentan gibt es kein Plug-in für elasticsearch, um Wörter in Zahlen zu konvertieren.

Ich empfehle Ihnen, einen Code zu erstellen, der rohe Abfrage als Eingabe erhält und die transformierte Abfrage (d. H. Wörter in Zahl umwandeln) für elasticsearch ausgibt.

Sie können this ruby gem (open-source) verwenden, um Wörter in Zahlen umzuwandeln und umgekehrt.

NumbersInWords.in_numbers("nineteen sixty five") 
1965 

Und schließlich verwendet, um Dinge einfacher ruby intergration for elasticsearch machen kann, um die Elasticsearch abfragen und die Ergebnisse zu erhalten.

require 'elasticsearch' 

client = Elasticsearch::Client.new log: true 

client.transport.reload_connections! 

client.cluster.health 

client.search q: 'test' 
Verwandte Themen