मुझे एक ऐसी परियोजना विरासत में मिली है जिसमें टायर के माध्यम से कुछ लोचदार खोज है।लोचदार खोज और टायर का उपयोग करके उच्चारणों को अनदेखा करें
खोज काम कर रही है, लेकिन इसके माध्यम से उच्चारण करता है। उदाहरण के लिए "इस" को "थिस" और "थिस" वापस करने की आवश्यकता है।
मैं इस टायर प्रलेखन पढ़ा है: http://karmi.github.com/tire/
साथ ही: http://railscasts.com/episodes/306-elasticsearch-part-1?view=asciicast
कौन सा कहा गया है कि लोचदार खोज के विकल्पों में से सबसे टायर में उपलब्ध हैं।
सर्च कर रहे हैं अनदेखी लहजे के बारे में, asciifolding आ रहा रखा, लेकिन लोचदार खोज सिर्फ इस इस बारे में कहना है:
http://www.elasticsearch.org/guide/reference/index-modules/analysis/asciifolding-tokenfilter.html
इसके अतिरिक्त मैं के बारे में फिल्टर/लहजे/आदि जैसे कि ये कुछ चीजें मिल गया:
https://github.com/elasticsearch/elasticsearch/issues/890
https://gist.github.com/2142635
लेकिन वे सभी नंगे लोचदार खोज विकल्पों का उपयोग कर रहे हैं।
जब मैं अपने रूबी कोड में एसिसीफोल्डिंग फ़िल्टर का उपयोग करने का प्रयास करता हूं, तो मुझे "asciifolding" के लिए परिभाषित फ़िल्टर के बारे में कोई त्रुटि नहीं मिलती है।
यहां मेरे कोड में किए जा रहे खोज की हिम्मत है - मैं इसे एक उच्चारण-प्रेरक खोज करने के लिए कैसे संशोधित कर सकता हूं। क्या यह असभ्य है, और यदि हां, तो मैं इसे यहां कैसे घोषित करूं?
result = tire.search(:load => true,page: params[:page], per_page: params[:per_page]) do
query { string "#{params[:term]}", :default_operator => 'and' } if params[:term].present?
filter :missing, :field => 'original_media_id' #see above
#asciifolding?
sort { by :updated_at, :desc } if params[:term].present?
facet 'files' do
terms 'indexed_files.file.id'
end
end
संपादित करें: या शायद यह मानचित्रण/अनुक्रमण में किया जाना चाहिए? और उसके बाद सूचकांक फिर से शुरू करें। यहाँ मानचित्रण है, मैं डाल की कोशिश की है: फिल्टर => "asciifolding" अनुक्रमणिका में से कुछ के लिए, लेकिन यह है कि काम करने के लिए नहीं मालूम था (और न ही उत्पन्न किसी भी त्रुटि उत्पादन):
tire.mapping do
indexes :id, :index => :not_analyzed
indexes :name, :filter => "asciifolding"
indexes :description, :filter => "asciifolding"
indexes :created_at, :type => 'date'
indexes :updated_at, :type => 'date'
indexes :file_type
indexes :indexed_files, :type => 'object' do
indexes :file, :type => 'object',
:properties => {
:title => {
:type => "multi_field",
:fields => {
:raw => { :type => 'string', :index => 'not_analyzed'},
:title => { :type => 'string', :filter => "asciifolding" }
}
},
:description => { :type => "string", :filter => "asciifolding" }
}
end
end