मैं अपने प्राथमिक डेटाबेस के रूप में Neo4j का उपयोग कर रहा हूं। यह ग्राफ डेटाबेस का एक अच्छा टुकड़ा है जो मुझे नोड्स के बीच कनेक्शन पर बहुत अच्छा नियंत्रण देता है। हालांकि, ऐसा लगता है कि पूर्ण पाठ (वेबसाइट पर खोज सुविधा) में अत्यधिक कमी है। और इसलिए, मैं अपने आवेदन पर खोज सुविधा बनाने के लिए Elasticsearch का उपयोग करने के बारे में सोच रहा हूं। लेकिन ऐसा करने के दौरान कुछ मुद्दे हैं। मान लें कि हम उपयोगकर्ता पोस्ट की तलाश में हैं। Neo4j पदों में निम्नलिखित मॉडल हो सकता है।संयोजन Neo4j और Elasticsearch
(post)<-[:AUTHOR]-(user)
(post)-[:LIKED_BY]->(otherusers)
(post)-[:COMMENTED_BY]->(otherusers)
(post)-[:HAS_PHOTO]->(photos)
Neo4j (एक उपयोगकर्ता प्रोफ़ाइल में पोस्ट प्राप्त करते हैं, जबकि मान लें) के बारे में अच्छा बात यह है कि आप जब आप इसे पर हैं यह सब एक ही बार में (यह भी प्रोफ़ाइल तस्वीर और उपयोगकर्ता जानकारी प्राप्त कर सकते हैं और आप पहले से ही पसंद किया है, तो पोस्ट)। यह एक प्रश्न (साइफर कमांड) में बहुत अधिक जानकारी है।
Neo4j और Elasticsearch मेंस्टोर सब कुछ: अब हम उत्पादन मैं पल में निम्नलिखित के बारे में सोच सकते हैं Elasticsearch के विस्तार के समान स्तर देने के लिए चाहते हैं। जब एक पाठ की खोज की जाती है तो परिणाम elasticsearch से खुद को सूचीबद्ध करते हैं। लेकिन अभी भी ऐसी समस्याएं हैं जैसे उपयोगकर्ता को पहले से ही पोस्ट पसंद आया है (इसे प्रत्येक पोस्ट के लिए फिर से पूछताछ की आवश्यकता हो सकती है? यह बहुत अच्छा नहीं लगता है)
Elasticsearch में स्टोर पोस्ट आईडी। खोज परिणामों को पॉप्युलेट करते समय, इस पोस्ट आईडी के साथ neo4j डेटाबेस से प्रत्येक पोस्ट की जानकारी लें और परिणाम प्रदर्शित करें। (10 परिणाम -> 10 अलग-अलग कॉल, फिर से बहुत अक्षम होते हैं)
एलआईडीएससीएआर प्रदान करता है और एलओ 4j को 1 कॉल करता है और परिणामों को पकड़ता है (यह नहीं पता कि यह कैसे करें या यदि वहां हैं प्रदर्शन के कारण)। एक साइफर संदर्भ सहायक हो सकता है।
इनमें से कोई भी समाधान? ये थोड़ा अक्षम है।
हाय @ प्यूवेलेसर, हमने अभी इसे जारी किया है: http://graphaware.com/neo4j/2016/04/20/graph-aided-search-the-rise-of-personalised-content.html –
@ क्रिस्टोफविलेम हेन धन्यवाद लिंक के लिए, एक महान परियोजना की तरह दिखता है। निश्चित रूप से इसे जांच लेंगे। प्रदर्शन और मापनीयता पर कोई जानकारी? – pewpewlasers
प्रदर्शन आपके साइफर प्रश्नों, रीको इंजन या यहां तक कि ES और neo4j के बीच विलंबता के प्रदर्शन पर अत्यधिक निर्भर हैं। यह कुल मिलाकर ईएस क्वेरी समय के लिए इस विलंबता को जोड़ता है (हमने नियो 4j तरफ जावा आधारित इंजन का उपयोग करते समय कच्चे साइफर और 10 एमएमएस के लिए कभी-कभी 40 मिमी मापा)। हालांकि हमने इसे neo4j के अंतिम संस्करण और http के बजाय बाइनरी प्रोटोकॉल के साथ सुधार लिया है। –