हम ओरेकल टेक्स्ट CTXSYS.CONTEXT इंडेक्स का उपयोग कर रहे हैं जिसमें मेटाफॉर्मेशन युक्त आधा मिलियन पंक्तियां हैं। जानकारी दो तालिकाओं में फैली हुई है जो एक प्रक्रिया द्वारा संयुक्त होते हैं जो सूचकांक रनटाइम (कार्यात्मक सूचकांक) पर कॉल करता है।ओरेकल टेक्स्ट इंडेक्सिंग को गति दें या इंडेक्सर को केवल कम लोड समय पर काम करें
जब मैं अपनी स्थानीय मशीन (सरल ड्यूलकोर नोटबुक) पर CREATE INDEX चलाता हूं तो सूचकांक लगभग 3 मिनट में बनाया जाता है। हमारे डीबी सर्वर पर जो 8 कोर और 16 जी रैम के साथ सोलारिस पर चलता है, वही (बिल्कुल वही) डेटा के लिए एक इंडेक्स बनाने में 24 घंटे लगते हैं।
नमूना कोड: यह दो टेबल और 3 कॉलम के लिए हमारे सूचकांक फीडर है:
create or replace procedure docmeta_revisions_text_feeder
(p_rowid in rowid , p_clob in out nocopy clob) as v_clob CLOB begin
FOR c1 IN (select DM.DID, DM.XDESCRIB || ' ' || DM.XAUTHOR AS data
from DOCMETA DM
WHERE ROWID = p_rowid)
LOOP
v_clob := v_clob || c1.data;
FOR c2 IN (
SELECT ' ' || RV.DDOCTITLE AS data
FROM REVISIONS RV
WHERE RV.DID = c1.DID)
LOOP
v_clob := v_clob || c2.data;
END LOOP;
END LOOP;
p_clob := v_clob;
end docmeta_revisions_text_feeder
ये प्राथमिकताएं
BEGIN
CTX_DDL.CREATE_PREFERENCE ('concat_DM_RV_DS', 'USER_DATASTORE');
CTX_DDL.SET_ATTRIBUTE ('concat_DM_RV_DS', 'PROCEDURE',
'docmeta_revisions_text_feeder');
END;
अब हम सूचकांक बनाने हैं
CREATE INDEX concat_DM_RV_idx ON DOCMETA (FULLTEXTIDX_DUMMY)
INDEXTYPE IS CTXSYS.CONTEXT
PARAMETERS ('datastore concat_DM_RV_DS
section group CTXSYS.AUTO_SECTION_GROUP
') PARALLEL 4;
डेटा में आमतौर पर एक साधारण शीर्षक या लेखक का नाम होता है + < 1k टेक्स्ट के साथ एक संक्षिप्त विवरण।
मैंने शामिल स्मृति सेटिंग्स और PARALLEL पैरामीटर के साथ थोड़ा सा खेलने की कोशिश की लेकिन कोई सफलता नहीं मिली। तो यहां मेरे प्रश्न आएं:
- क्या इंडेक्सिंग प्रक्रिया को रोकने और फिर से शुरू करने का कोई तरीका है (मेरे पास सीटीएक्स_SYS भूमिका है)?
- कोई भी संकेत है कि कौन सा पैरामीटर tweaked (esp। स्मृति आकार) tweaked किया जा सकता है?
- क्या टेक्स्ट इंडेक्स को निर्यात और आयात करना संभव है? -> तो मैं अपनी स्थानीय मशीन पर इंडेक्सिंग कर सकता हूं और इसे बस हमारे सर्वर
- पर कॉपी कर सकता हूं "इंडेक्सर" कम प्राथमिकता "के साथ चल सकता है?
- यह संभव है कि सूचकांक लॉकिंग ऑपरेशंस द्वारा परेशान हो गया है (यह एक स्टेजिंग मशीन है जो समानांतर में अन्य पहुंच है)। क्या शामिल टेबल को लॉक करने, इंडेक्स बनाने और बाद में अनलॉक करने का कोई तरीका है?
आपके शोध के लिए धन्यवाद। – egor7
ग्रेट लिप्यंतर, मुझे पता लगाने के लिए सप्ताह लग गए। हालांकि, populate_pending स्रोत तालिका में सभी पंक्तियों/दस्तावेज़ों के साथ PENDING अनुक्रमणिका अद्यतनों की सूची पॉप्यूल करता है। ओरेकल को पता नहीं है कि क्या हो सकता है, आखिरकार, जो कुछ बदल गया है उसे ट्रैक करना ठीक है, सीटीएक्सएसवाईएस.डीआर $ पेंडिंग क्या है। इंडेक्स बनाने के दौरान या अगर आप सबकुछ फिर से इंडेक्स करना चाहते हैं तो इसका इस्तेमाल करें। – Roy