2016-12-10 16 views
7

Bir Elasticsearch sunucusu çalıştırıyorum.İngilizce numaraları ve arap rakamlarını eşitlemek için filtre veya analizör

fifty two meters gibi bir sorguyu 52 meters içeren bir belgeyle eşleştirmek istiyorum.

Arap rakamları sayı kelimeler dönüştürür herhangi bir eklenti (filtre ya da analiz) var mı?

+0

Sen (https://www.elastic.co/guide/en/elasticsearch/reference/current/analysis-synonym-tokenfilter.html) tüm yazıldığından eşdeğer tutmanın [eşanlamlı belirteç filtreyi] kullanmayı deneyebilirsiniz sayısal karşılığı ile sayı dışarı. – Val

+0

@Val, true, ama çok uzun olsun. Örneğin, "yedi yüz yirmi altı => 726" 'eşanlamlığını belirtmek zorundayım. PyPI'nin [num2words] (https://pypi.python.org/pypi/num2words) 'e benzer bir ES eklentisine sarılmış bazı programatik çözümlerin umuyordum. – Garrett

+1

Java'da bunu yapan birkaç proje var ([bir tane burada] (https://github.com/gulimran/num2words)), bu yüzden, onu destekleyen bir simge oluşturmak benim fikrimde çok zor olmaz . Eğer zamanım varsa, öğle yemeğine çıkmayı deneyeceğim :-) – Val

cevap

4

Şu anda herhangi eklenti elasticsearch numarasına kelimeleri dönüştürmek için vardır. elasticsearch için: (sayı kelime dönüştürmek yani)

I bir giriş olarak ham sorgu alır ve sorgu dönüştürülmüş çıkış olarak bir kod oluşturma göstermektedir.

Sen numaraya ve tersi kelimeleri dönüştürmek için this ruby gem (open-source) kullanabilirsiniz.

NumbersInWords.in_numbers("nineteen sixty five") 
1965 
Ve nihayet elasticsearch sorgulamak ve sonuç almak için kullanılan ruby intergration for elasticsearch kutu işleri kolaylaştırmak için.

require 'elasticsearch' 

client = Elasticsearch::Client.new log: true 

client.transport.reload_connections! 

client.cluster.health 

client.search q: 'test' 
İlgili konular