2015-03-23 7 views
7

का पूरा पाठ अनुक्रमण कहते हैं कि मैं एक किताब इस तरह का प्रतिनिधित्व किया है की सुविधा देता है:पुनरावर्ती नेस्टेड jsonb संरचनाओं

{ title: "Tis no book" 
    chapter: 1, 
    text: "Hello world this is a book chapter", 
    subchapters: [ 
    { 
    chapter: 1.1 
    text: "Nested sub chapter" 
    subchapters: [ 
     chapter: 1.1.1 
     text: "Nested nested..." 
     subchapters: [ ...etc...] 
    }, 
    { 
    chapter: 1.2 
    text: "Nested sub chapter 2" 
    subchapters: [ ...etc...] 
    } 
    ] 
} 

मैं postgres '9.4 नई jsonb/जिन (या कुछ और) का उपयोग कर सकते एक पूरा टेक्स्ट सूचकांक स्थापित करने के लिए इस रिकर्सली नेस्टेड डेटा स्ट्रक्चर के "text" फ़ील्ड पर, जैसे डेटाबेस में संग्रहीत पुस्तकों की लाइब्रेरी टेक्स्ट (इंडेक्स का उपयोग करके) द्वारा खोजी जा सकती है?

उत्तर

-1

मैं इस प्रश्न का उत्तर नहीं दूंगा; इसके बजाय, मैं एक पूरी तरह से अलग दृष्टिकोण का सुझाव देने जा रहा हूँ।

क्या आपने लुसीन, https://lucene.apache.org/core/ पर एक नज़र डाली है? डेटाबेस में पूर्ण-पाठ खोज को कार्यान्वित करना खराब डिज़ाइन है। आपको ल्यूसीन जैसे एक अलग पूर्ण-पाठ सूचकांक का उपयोग करना चाहिए। ल्यूसीन दस्तावेजों को डेटाबेस कुंजी को संदर्भित करना चाहिए जिसका उपयोग डेटाबेस में वास्तविक रिकॉर्ड को देखने के लिए किया जा सकता है।

लुसीन का उपयोग करके, आपको डेटाबेस की पूर्ण-पाठ खोज सुविधाओं का उपयोग करके अधिक बेहतर प्रदर्शन प्राप्त होगा। इसके अलावा, लुसीन आपके डेटाबेस से बाहर स्केल करना कहीं अधिक आसान है।

+1

ये निश्चित रूप से यह निश्चित रूप से समाधान है जो पहले दिमाग में आता है, लेकिन मैं कुछ लेख पढ़ रहा था जिसमें सुझाव दिया गया है कि पोस्टग्रेज़ में पूर्ण पाठ अनुक्रमण अब त्वरित है (https://wiki.postgresql.org/images/2/ 25/पूर्ण-पाठ_search_in_PostgreSQL_in_milliseconds-expand-version.pdf) और यह सोचकर कि यह संभव है या नहीं। लेकिन वास्तविकता की जांच के लिए धन्यवाद। – gremwell

+2

ठीक है, अगर आप PostgreSQL की पूर्ण पाठ अनुक्रमणिका का उपयोग करने का निर्णय लेते हैं, तो आपके द्वारा चुने गए पथ में शुभकामनाएँ! एक समाधान "टेक्स्ट" फ़ील्ड को एक अलग कॉलम में जोड़ना होगा और उस कॉलम पर पूर्ण-पाठ अनुक्रमणिका का उपयोग करना होगा। कुछ डेटा डुप्लिकेशन में परिणामस्वरूप, लेकिन हे, डिस्क स्पेस इन दिनों सस्ता है। – juhist

4

मैंने अभी पूर्ण-पाठ खोज और जेसनबी प्रकारों को देखना शुरू कर दिया है। ऐसा लगता है कि एक बार जब आप समझते हैं कि अनुक्रमणिका जेएसओएनबी प्रकारों पर कैसे काम करती है तो यह संभव है। मुझे यह ब्लॉग श्रृंखला बहुत उपयोगी साबित हुई है।

https://bibhas.in/blog/postgresql-swag-part-2-indexing-json-data-type-and-full-text-search/

इसके अलावा, Postgres में JSON प्रकार पर प्रलेखन कुछ अच्छी अंतर्दृष्टि शामिल हैं। http://www.postgresql.org/docs/9.4/static/datatype-json.html

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