उदाहरण के लिए, मेरे पास खोज के लिए कीवर्ड है: 'बास्केट बॉल'। यह प्रश्न क्या है जो 'बास्केट बॉल' वाले सभी फ़ील्ड को प्राप्त कर सकता है। मैंने * बास्केट बॉल का उपयोग करने की कोशिश की है, लेकिन यह काम नहीं करता है।मैं एसओएलआर में सभी फ़ील्ड कैसे खोज सकता हूं जिसमें कीवर्ड शामिल हैं।
उत्तर
Schema.xml डिफ़ॉल्ट खोज क्षेत्र परिभाषित करता है।
<copyField source="field1" dest="text"/>
<copyField source="field2" dest="text"/>
<copyField source="field3" dest="text"/>
और क्वेरी q=basket ball
काम करना चाहिए।
आपको एक क्वेरी पार्सर का उपयोग करने की आवश्यकता है जो कई क्षेत्रों में टोकन भेजने में सक्षम है, जैसे कि (ई) निष्कासन। http://solr/select?q={!dismax}Basket Ball&qf=field1^1 field2^1
dismax विन्यास पर अधिक जानकारी के लिए http://wiki.apache.org/solr/DisMaxQParserPlugin#qf_.28Query_Fields.29 देखें: उदाहरण के लिए यदि आप दो क्षेत्रों field1
और field2
है।
<defaultSearchField>text</defaultSearchField>
आप इस डिफ़ॉल्ट खोज क्षेत्र के लिए सभी क्षेत्रों कॉपी कर सकते हैं -
को ,. ? और चरित्र^1 मतलब क्या है। – Praditha
हां आपको हर फ़ील्ड निर्दिष्ट करने की आवश्यकता है। '^' चरित्र आपको अपने क्षेत्र में वजन देने की क्षमता देता है। उदाहरण के लिए, यदि 'फ़ील्ड 1' में एक मैच 'फ़ील्ड 2' में एक मैच के रूप में दोगुना होना चाहिए, तो आप 'qf = field1^2 field2^1' का उपयोग कर सकते हैं। – jpountz
डिफ़ॉल्ट खोज क्षेत्र (3.6 के बाद से) अब solrconfig.xml में परिभाषित किया गया है
उदा solrconfig.xml कि Solr साथ जहाजों निर्देशिका आप
<initParams path="/update/**,/query,/select,/tvrh,/elevate,/spell">
<lst name="defaults">
<str name="df">allText</str>
</lst>
</initParams>
की तरह कुछ आप बदल सकते हैं देखेंगे configsets में allText
अगर इस तरह, यह अभी भी क्षेत्रों है कि खोज में सही हो जाएगा निर्दिष्ट करना होगा yourDefaultSearchFieldName
देखें, त्रुटि देने के दौरान 'अपरिभाषित फ़ील्ड टेक्स्ट' –
सोलर का कौन सा संस्करण आप उपयोग कर रहे हैं? – kellyfj
मैं सोलर 5.3 –
यह सोलर 3.6 और बाद में अब सत्य नहीं है। ऐसा करने के बाद https://issues.apache.org/jira/browse/SOLR-2724 – kellyfj