2016-12-10 5 views
7

मैं एक लोचदार खोज सर्वर चला रहा हूं।अंग्रेजी संख्याओं और अरबी अंकों को समतुल्य करने के लिए फ़िल्टर या विश्लेषक

मुझे युक्त दस्तावेज़ से मेल खाने के लिए fifty two meters जैसी कोई क्वेरी चाहिए।

क्या कोई प्लगइन (फ़िल्टर या विश्लेषक) है जो संख्या शब्दों को अरबी अंकों में परिवर्तित करता है?

+0

आप (https://www.elastic.co/guide/en/elasticsearch/reference/current/analysis-synonym-tokenfilter.html) सभी वर्तनी समानता के लिए एक [पर्याय टोकन फिल्टर] का उपयोग करने की कोशिश कर सकते उनके संख्यात्मक समकक्ष के साथ संख्या। – Val

+0

@ वैल, सच है, लेकिन यह बहुत लंबा होगा। उदाहरण के लिए, मुझे समानार्थी शब्द "सात सौ और बीस छः => 726" निर्दिष्ट करना होगा। मैं पीएसपीआई के [num2words] (https://pypi.python.org/pypi/num2words) के समान, एक ईएस प्लगइन में लिपटे कुछ प्रोग्रामेटिक समाधान की उम्मीद कर रहा था। – Garrett

+1

वहां कुछ ऐसी परियोजनाएं हैं जो जावा में ऐसा करती हैं ([यहां एक] (https://github.com/gulimran/num2words)), इसलिए एक टोकन फ़िल्टर बनाना जो मेरी राय में बहुत मुश्किल नहीं होगा । यदि मेरे पास समय है तो मैं दोपहर के भोजन के लिए इसे पाने की कोशिश करूंगा :-) – Val

उत्तर

4

वर्तमान में शब्दों को संख्या में बदलने के लिए elasticsearch के लिए कोई प्लग-इन नहीं है।

मैं आपको एक कोड बनाने के लिए सुझाव देता हूं जो इनपुट के रूप में कच्ची क्वेरी प्राप्त करता है और elasticsearch के लिए क्वेरी को परिवर्तित करता है (यानी: शब्दों को संख्या में परिवर्तित करता है)।

आप शब्दों को संख्या और इसके विपरीत रूपांतरित करने के लिए this ruby gem (open-source) का उपयोग कर सकते हैं।

NumbersInWords.in_numbers("nineteen sixty five") 
1965 

और चीजों को आसान ruby intergration for elasticsearch कर सकते हैं अंत में elasticsearch क्वेरी और परिणाम प्राप्त करने के लिए इस्तेमाल करते हैं।

require 'elasticsearch' 

client = Elasticsearch::Client.new log: true 

client.transport.reload_connections! 

client.cluster.health 

client.search q: 'test' 
संबंधित मुद्दे

 संबंधित मुद्दे