2009-07-27 8 views
5

मेरे पास लुसीन इंडेक्स में एक कंपनी फ़ील्ड है। अनुक्रमित कंपनी नामों में से एक है: मूडी काल्यूसीन इंडेक्स में एस्ट्रोफ़े के साथ शब्दों को संग्रहीत करना

जब उपयोगकर्ता निम्न में से किसी भी कीवर्ड में टाइप करता है, तो मैं चाहता हूं कि यह कंपनी खोज परिणामों में आ जाए। 1.Moo 2.Mood 3.Moodys 4.Moody के

मैं कैसे Lucene में इस सूचकांक संग्रहीत करना चाहिए और मैं इस व्यवहार को प्राप्त करने के लिए Lucene क्वेरी किस प्रकार उपयोग करना चाहिए?

धन्यवाद।

+0

उत्तर इस बात पर निर्भर करता है कि आप अपनी शेष इंडेक्स को किस प्रकार बनाना चाहते हैं: 1. क्या बहुवचन का प्रतिनिधित्व किया जाना चाहिए? यानी "ऐप्पल" और "सेब" अलग हैं? 2. क्या आप एस्ट्रोफ़ेस रखना चाहते हैं, या उन्हें समाप्त किया जा सकता है? 3. क्या कोई कंपनी का नाम अलग दिखता है, या बड़े क्षेत्र के अंदर? –

+0

आपकी टिप्पणियों के लिए धन्यवाद ... मेरी प्रतिक्रिया 1. नहीं 2. मैं चाहता हूं कि ल्यूसीन एस्ट्रोफ़ेस न रखें 3. कॉम्पनी नाम अलग-अलग क्षेत्र में अलग-अलग दिखाई दे सकता है – Jimmy

उत्तर

9

अपने स्पष्टीकरण के आधार पर, मैं दो में अपने प्रश्न को विभाजित, और बदले में प्रत्येक का उत्तर देना चाहते:

  1. मैं कैसे करूँ सूचकांक एक apostrophe के बिना समान शब्दों के बराबर एपॉस्ट्रोफ़ी साथ शब्द? जैसे मैपिंग मूडी और मूडी के उसी इंडेक्स अवधि में मैपिंग।
  2. मैं ल्यूसीन में ऑटो-पूर्ण खोज कैसे कार्यान्वित करूं - यानी एक इंडेक्स दिया गया, शब्द उपसर्ग का उपयोग कर दस्तावेज़ ढूंढें, उदा। मानचित्र म्यू से मूडी?

1 अपेक्षाकृत आसान है - अपॉस्ट्रफ़ी और पिछले शब्द के साथ संयोजन के एक टोकन बनाने के लिए एक StandardToeknizer का प्रयोग करें, तो एक StandardFilter अपॉस्ट्रफ़ी और रों दूर करने के लिए। यह मूडी के मूडी को कन्वर्ट करेगा। एक StandardAnalyzer यह और बहुत कुछ करता है (शब्द को हटाने और रोकना), जो आपकी आवश्यकता से अधिक हो सकता है। एक स्टेमर का उपयोग करना मूडी और मूडी दोनों टोकन में लेना चाहिए। इसके लिए SnowBallFilter आज़माएं।

2 कठिन है: ल्यूसीन PrefixQuery, जिसे एलन ने कहा था, केवल तभी काम करेगा जब कंपनी का नाम किसी क्षेत्र में पहला शब्द होगा। आपको this question about auto-complete in Lucene के उत्तर की तरह कुछ चाहिए।

1

StandardAnalyser, 3 और 4 के लिए काम करना चाहिए लेकिन अपने स्वयं के (जटिल) पाठ विश्लेषक लेखन के बिना 1 और 2

लिए काम नहीं करेगा, मैं तुम्हें कैसे कंपनी के नाम होने की उम्मीद कर रहे हैं के बारे में सोचते हैं खोजा गया। उदाहरण के लिए, मूल ल्यूसीन सर्च सिंटैक्स का मतलब है कि यदि आप वाइल्डकार्ड का उपयोग करते हैं तो आपको "मूडीज" मिल सकती है: "म्यू *" और "मूड *"। इसलिए, हो सकता है कि आप ल्यूसीन को सबमिट करने से पहले खोज शब्द में "*" जोड़ना चाहें, हालांकि यह कुछ भ्रम पैदा कर सकता है अगर उपयोगकर्ता हुड के नीचे इस वाइल्डकार्ड के अतिरिक्त से अवगत नहीं है।

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