2009-12-29 17 views
22

मैं अपनी वेबसाइट डेटाबेस अनुक्रमण के लिए अपाचे Solr खोज इंजन का उपयोग कर रहा हूँ की अपाचे Solr खोज हिस्सा ..शब्द

मैं Django उपयोग कर रहा हूँ + http://haystacksearch.org/

तो चलो कहते हैं कि मैं दस्तावेज़ शब्द है डालते हैं "चिकन "

जब मैं के लिए खोज" चिकन "- Solr इस दस्तावेज़

पा सकते हैं लेकिन जब मैं खोज" लड़की "- यह कुछ भी नहीं मिल रहा है ..

क्या इसे ठीक करने का कोई तरीका है?

उत्तर

18

नोट: निम्न समाधान सोलर 1.4 (और ऊपर) विशिष्ट है!

अधिक लचीलापन के लिए, मैं NGramTokenizerFactory के साथ अपने डेटा को पूर्ण फ्रंट और बैक वाइल्डकार्ड खोज करने के लिए अनुक्रमणित करने की अनुशंसा करता हूं। यदि आप स्ट्रिंग की शुरुआत या अंत में सबस्ट्रिंग्स खोजना चाहते हैं, तो EdgeNGramTokenizerFactory का उपयोग करने पर विचार करें।

<fieldType name="text" class="solr.TextField" > 
<analyzer type="index"> 
    <tokenizer class="solr.NGramTokenizerFactory" minGramSize="3" maxGramSize="15" /> 
    <filter class="solr.LowerCaseFilterFactory"/> 
</analyzer> 
<analyzer type="query"> 
    <tokenizer class="solr.WhitespaceTokenizerFactory" /> 
    <filter class="solr.LowerCaseFilterFactory"/> 
</analyzer> 
</fieldType> 
+0

सोलर 1।5 - क्या यह विकास संस्करण है? (जारी नहीं किया गया?) –

+1

इस तरह के समाधान 1.4 के लिए है? –

+0

अच्छा पकड़: मैंने 1.4 – Brian

7

यदि आप लड़की के साथ शुरू होने वाले सभी शब्द ढूंढना चाहते हैं, तो लड़की * के लिए खोजें।

+0

मैं \ * लड़की \ * का उपयोग करने में सक्षम नहीं हूँ? क्या यह संभव है? –

+0

@ साउंडार, यह एक ** खराब ** लड़की है;) आप खोजशब्द के सामने * नहीं हो सकते हैं, लुसीन इसका समर्थन नहीं करता है। –

1

एक अलग दृष्टिकोण है, अगर आप शब्दों के एक छोटे समूह के साथ परेशानी हो रही है, Solr उपयोग करने के लिए होगा:

यहाँ पाठ क्षेत्र प्रकार के प्रतिस्थापन में एक बूंद जो अपनी जरूरत को समायोजित करेगा। SynonymFilterFactory

http://wiki.apache.org/solr/AnalyzersTokenizersTokenFilters#solr.SynonymFilterFactory

तुम बस कि समानार्थी शब्द शामिल एक साधारण पाठ फ़ाइल बनाए रखने के लिए है:

chick peep chicken 
dawg hound dog 
moggie puss kitten cat 

बहुवचनों को अन्य फ़िल्टरों के साथ स्वयं का ख्याल रखना चाहिए।

4

जब मैं

<tokenizer class="solr.NGramTokenizerFactory" minGramSize="3" maxGramSize="15" /> 

का उपयोग किया है ब्रायन के जवाब से वाइल्डकार्ड खोज करने के लिए, Solr अनुक्रमण समय dramaticly वृद्धि हुई है। 20 से अधिक बार में! वाइल्डकार्ड खोज समस्या के अन्य निर्णय मैं यहाँ पाया:

http://www.lucidimagination.com/blog/2009/09/08/auto-suggest-from-popular-queries-using-edgengrams/

आप की जरूरत है सिर्फ फिल्टर

<filter class="solr.EdgeNGramFilterFactory" minGramSize="1" maxGramSize="25" /> 

(डिफ़ॉल्ट tokenizer - solr.WhitespaceTokenizerFactory FieldType के सूचकांक ब्लॉक में) जोड़ें। मेरे लिए परिणाम कम सिस्टम लागत के साथ ही था।

0

मैंने कोई कॉन्फ़िगरेशन नहीं बदला है। मैं सिर्फ अपनी खोज के पीछे और पीछे की तरफ स्टार का उपयोग कर रहा हूं: * चिक * * (अंत में सफेद जगह के बिना -> यह एसओ स्वरूपण शब्द के कारण इटैलिक के रूप में है यदि आप * शुरुआत में और अंत में उपयोग करते हैं)

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