2012-02-06 12 views
11

हमारे पास ऐसी स्थिति है जहां हमें एकल मशीन या कई अलग-अलग मशीनों पर विभिन्न बंदरगाहों पर चलने वाले सोलर/टॉमकैट के कई उदाहरण बनाना पड़ सकता है। ऐसा करने के लिए मैं सोच रहा था कि क्या डेटा डीआईआर वैरिएबल (solrconfig.xml के भीतर) को पर्यावरण के उपयोग से निर्दिष्ट करना संभव है उदाहरण के लिए: <dataDir>${envvar}/path/to/index</dataDir>डेटा डीआईआर वैरिएबल के लिए solrconfig.xml के भीतर पर्यावरण चर का उपयोग करना संभव है?

+1

सुनिश्चित नहीं हैं कि अगर आप वातावरण चर का उपयोग कर सकते हैं, लेकिन सिस्टम गुण के रूप में इस्तेमाल किया जा सकता [यहां] समझाया (http://wiki.apache.org/solr/SolrConfigXml#System_property_substitution)। – nikhil500

उत्तर

7

जैसा कि मैं एक समान सेटअप पर काम कर रहा हूं, मुझे इसकी भी आवश्यकता है। मुझे नहीं लगता कि इसके लिए एनएनवी चर का उपयोग करना अच्छा अभ्यास है। आप मल्टीकोर सेटअप का उपयोग कर शायद बेहतर हो सकते हैं या solr.xml में एक प्रॉपर्टी फ़ाइल का उपयोग कर सकते हैं।

उदाहरण के लिए।

<core name="core_1" instanceDir="core_1" properties="core1.properties" /> 

और फिर अपने core1.properties में:

config.datadir=/datadir1 

और उसके बाद का उपयोग करें कि आपके solrconfig.xml में:

<dataDir>${config.datadir}</dataDir> 

चीयर्स,

पैट्रिक

+0

क्या यह डेटा-config.xml में भी इस्तेमाल किया जा सकता है? –

2

multi-core पर जाएं।

आप एक विशेष इंडेक्स निर्देशिका को कोर के रूप में तैनात करने के लिए सोलर को बता सकते हैं। उदाहरण के लिए, path_to_instance_directoryhttp://localhost:8983/solr/coreX पर पर एक Solr सूचकांक तैनात करने के लिए, आप क्या करेंगे:

http://localhost:8983/solr/admin/cores?action=CREATE&name=coreX&instanceDir=path_to_instance_directory&config=config_file_name.xml&schema=schem_file_name.xml&dataDir=data 

आप बनाने के लिए, भार, दो चल कोर स्वैप, एक निष्क्रिय कोर के साथ एक चल कोर स्वैप आदि

Solr बता सकते हैं
4

हाँ, आप यह कर सकते हैं, लेकिन वाई जब आप इसे शुरू करते हैं तो इसे using system properties passed to the JVM सेट करने के लिए दो हुप्स के माध्यम से कूदने की आवश्यकता है।

कहीं भी आप अपने वातावरण चर, अपने विन्यास फाइल में काम करते हैं इस तरह चर रखना चाहता हूँ:

${VAR} 

तब, जब आप अपने JVM शुरू करते हैं, यह चर करके पारित:

java -DVAR=$your-system-variable 

तो, यह ठोस बनाने के लिए, यहाँ हम क्या करना है:

java -DINSTALL_ROOT=$INSTALL_ROOT -jar -server start.jar 

और हमारे config रों है कुछ ऐसा:

<filter class="solr.SynonymFilterFactory" synonyms=${INSTALL_ROOT}/Solr/conf/synonyms.txt /> 

एक आकर्षण की तरह काम करता है।wiki.apache.org पर समझाया

0

रूप में, आप नीचे की तरह solrconfig.xml में प्रणाली संपत्ति प्रतिस्थापन का उपयोग कर सकते हैं:

<dataDir>${data.dir}</dataDir> 

तो फिर तुम एक गुण में मान निर्दिष्ट कर सकते दायर:

#solrcore.properties 
data.dir=/data/solrindex 

एक और तरीका है इस तरह से सोलर रनटाइम के दौरान डेटा निर्देशिका को निर्देशित करने के लिए:

java -Dsolr.data.dir=/data/dir -jar start.jar 

और एक्सएमएल फ़ाइल में निम्न सिंटैक्स का उपयोग:

<dataDir>${solr.data.dir:./solr/data}</dataDir> 

मुझे लगता है कि बेहतर तरीका अपने solr.home भीतर solr.xml परिभाषित करने के लिए है, जैसे:

<solr persistent="true" sharedLib="lib"> 
<cores adminPath="/admin/cores"> 
    <core name="core0" instanceDir="core0" dataDir="/var/lib/solr/core0" /> 
    <core name="core1" instanceDir="core1" dataDir="/var/lib/solr/core1" /> 
</cores> 
</solr> 

नोट: मैं डॉन ऐसा नहीं लगता कि आप यहां किसी बाहरी चर का उपयोग कर सकते हैं।


अंत में conf/Catalina/localhost में JVM प्रणाली संपत्ति फ़ाइल (उदा solr.xml) का उपयोग कर, उदाहरण के लिए:

<Context docBase="webapps/solr.war" crossContext="true"> 
    <Environment name="solr/home" type="java.lang.String" value="/opt/solr/ads_solr" override="true" /> 
    <Environment name="solr/data/dir" type="java.lang.String" value="/var/lib/solr" override="true" /> 
</Context> 

जहां solr/home काम करेगा, हालांकि solr/data/dirwon't work अपने Solr पैचिंग के बिना।

देखें: tomcat_solr.xml.erb

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