2013-08-27 6 views
5

के लिए समानार्थी रूप से समानार्थी परिवर्तन कैसे करें मेरे समानार्थी डेटाबेस में संग्रहीत हैं और, जब डेटाबेस में समानार्थी शब्द बदलते हैं, तो मैं सूचकांक में किसी भी मान को अद्यतन करना चाहता हूं जो समानार्थी परिवर्तन के परिणामस्वरूप बदला जा सकता है।ElasticSearch

इस पर दो भाग हैं जिनके बारे में मैं सोच सकता हूं। एक, यह पता लगाने के लिए कि कौन से दस्तावेजों को फिर से अनुक्रमित करना है। दो, यह पता लगाना कि लोचदार खोज कैसे कहें कि समानार्थी बदल गए हैं। मैं दूसरे के साथ संघर्ष कर रहा हूं - लोचदार खोज बता रहा हूं कि समानार्थी बदल गए हैं।

एक समान प्रश्न पूछा गया है - Change dynamically elasticsearch synonyms देखें - लेकिन उस समस्या के उत्तरों को पढ़ने से, मुझे यह पता लगाने में सक्षम नहीं है कि मुझे क्या चाहिए।

वर्तमान में, मेरी विन्यास फाइल निम्नलिखित तरह दिखता है:

curl -XPUT 'http://127.0.0.1:9200/foo/_settings' -d ' 
{ 
    "filter" : { 
     "synonym" : { 
      "type" : "mysynonymfilter", 
      "synonyms" : [ 
       "cosmos, universe" 
      ] 
     } 
    } 
} 
' 

लेकिन यह है कि मैं क्या चाहते हो प्रतीत नहीं होता:

index : 
    analysis : 
    analyzer : 
     myanalyzer : 
     filter: [standard, mysynonymfilter] 
filter : 
    mysynonymfilter :  
    type : synonym 
    synonyms : synonyms.txt 
    ignore_case : false 
    expand : true 
    format : solr 

मेरा विचार निम्नलिखित की तरह कुछ करने के लिए था । यही है, जहां तक ​​मैं कह सकता हूं, इंडेक्स सेटिंग्स अपडेट नहीं होती है।

क्या मैं संभव करने की कोशिश कर रहा हूं? और यदि हां, तो क्या कोई विचार है कि मैं गलत क्या कर रहा हूं?

इसके अलावा, मुझे पूरा यकीन है कि मैं समानार्थी फ़ाइल को अपडेट करके इसे काम करने के लिए प्राप्त कर सकता हूं (अगर मुझे फ़ाइल का उपयोग करना है), लेकिन यह थोड़ा और जटिल है और मैं इससे बचना चाहता हूं।

आपकी मदद के लिए धन्यवाद, एरिक

उत्तर

2

पर्याय फ़ाइल lindstromhenrik/elasticsearch-analysis-file-watcher-synonym हालांकि मैं नहीं जानता कि अगर यह नवीनतम संस्करण में काम करता है फिर से लोड करने के लिए एक परियोजना है। हो सकता है कि आप प्लगइन का उपयोग करके और क्वेरी समय पर समानार्थी शब्दों का विस्तार करके शुरू कर सकें, क्योंकि क्वेरी समय पर आपके पास समेकित दस्तावेज़ों के बजाय सभी समानार्थी अपडेट होंगे जो आपको लगता है कि समानार्थी फ़ाइल में परिवर्तनों के कारण अद्यतन किया जाना चाहिए।

+0

धन्यवाद क्लस्टर में प्रत्येक नोड, एक पुन: प्रारंभ हो, लेकिन मेरा मानना ​​है कि मैं जानता हूँ कि मेरे इस मुद्दे को हल करने के लिए कैसे अगर मैं पर्याय फ़ाइल सीधे अद्यतन करते हैं, लेकिन मेरे सवाल का नहीं होने के साथ सौदा करने का इरादा था समानार्थी फ़ाइल को अद्यतन करें (और इसके बजाय समानार्थी को एक REST कमांड के माध्यम से अद्यतन करना)। – Eric

7

यह पता चला है कि आप प्रोग्रामिक रूप से ElasticSearch को बता सकते हैं कि समानार्थी शब्द बदल गए हैं। यही है, समानार्थी फ़ाइल को अद्यतन करना आवश्यक नहीं है। यहां आवश्यक बुनियादी कदम हैं:

  • अनुक्रमणिका बंद करें।
  • नई समानार्थी सूची के साथ अनुक्रमणिका सेटिंग्स अद्यतन करें। सुरक्षित होने के लिए, मैं इंडेक्स के लिए सभी विश्लेषक, टोकनकार और चार फ़िल्टर अपडेट कर रहा हूं (केवल समानार्थी फ़िल्टर नहीं) - लेकिन मुझे यकीन नहीं है कि यह आवश्यक है।
  • सूचकांक खोलें।
+1

यह विधि कितनी तेज़ है ?? –

+1

@Eric वास्तव में आप अपना उत्तर – shankshera

1

आपने अपने अंतिम कर्ल कमांड में mysynonymfilter और synonym फ़्लिप किया है। प्रकार synonym होना चाहिए।

1

मुझे पता है कि यह एक पुराना धागा है, लेकिन अगर यह किसी की मदद करता है। जवाब here पाया जा सकता है:

आप stopwords पैरामीटर के साथ इनलाइन stopwords निर्दिष्ट करते हैं, अपने ही एकमात्र विकल्प सूचकांक को बंद करने और अद्यतन सूचकांक सेटिंग्स एपीआई के साथ विश्लेषक विन्यास को अद्यतन करने के लिए, तो फिर से खोलना है सूचकांक।

यदि आप उन्हें stopwords_path पैरामीटर वाली फ़ाइल में निर्दिष्ट करते हैं तो स्टॉपवर्ड अपडेट करना आसान है। तुम बस फ़ाइल (प्रत्येक नोड पर क्लस्टर में) अद्यतन कर सकते हैं और फिर द्वारा करने के लिए फिर से बनाया जा इन कार्यों में से या तो विश्लेषक के लिए मजबूर:

समापन और सूचकांक फिर से खोलने (खोलने/बंद करने सूचकांक देखें), या द्वारा प्रतिक्रिया के लिए एक

+0

स्वीकार कर सकते हैं यह ध्यान देने योग्य है कि स्टॉपवर्ड के लिए यह प्रक्रिया [समानार्थी शब्दों का उपयोग करने पर दस्तावेज़] की सिफारिश है (https://www.elastic.co/guide/en/elasticsearch/guide/current /using-synonyms.html) समानार्थी को अद्यतन करने के लिए भी: "देखें [अपडेटिंग रोकें] [https://www.elastic.co/guide/en/elasticsearch/guide/current/using-stopwords.html#updating-stopwords) उन तकनीकों के लिए जिन्हें समानार्थी सूची को रीफ्रेश करने के लिए उपयोग किया जा सकता है। " –