2011-02-02 14 views
8

में शब्दों को रोकें हम साइटकोर के हिस्से के रूप में टेक्स्ट खोज के लिए लुसीन का उपयोग कर रहे हैं। साइटकोर खोज में स्टॉप शब्दों को अनदेखा करने के लिए कोई तरीका है (जैसे, ए, ...)?साइटकोर

+0

इसका उपयोग क्या है? यदि आप ** टोपी में बिल्ली खोजते हैं ** आप चाहते हैं कि यह वास्तव में सिर्फ खोज करें जैसे आपने ** बिल्ली टोपी ** दर्ज की है? या क्या आप परिणामों में उन्हें फ़िल्टर करने का मतलब है? –

उत्तर

14

डिफ़ॉल्ट रूप से, साइटकोर ल्यूसीन मानक विश्लेषक का उपयोग करता है - Lucene.Net.Analysis.Standard.StandardAnalyzer। आप देख सकते हैं कि यह web.config फ़ाइल के /configuration/sitecore/search/analyzer तत्व में परिभाषित किया गया है। StandardAnalyzer वर्ग के रचनाकारों में से एक स्ट्रिंग की सरणी स्वीकार करता है जो इसे स्टॉप शब्दों पर विचार करेगा। डिफ़ॉल्ट रूप से यह रोक शब्द जिसमें शामिल की हार्डकोडेड सूची का उपयोग करता:,

"एक", "एक", "और" "पर" "कर रहे हैं", "के रूप में",, "हो", "लेकिन "," द्वारा "," के लिए "," अगर "," में " " में "," है "," यह "," नहीं "," नहीं "," का ", " चालू ", या "," ऐसा "," वह "," द ", " उनका "," फिर "," वहां "," इन ", " वे "," यह "," से "," था "," होगा ", " के साथ "

आप इस व्यवहार को ओवरराइड करने के लिए चाहते हैं, तो मुझे लगता है कि आप StandardAnalyzer वारिस और बंद w लेने के लिए उसके डिफ़ॉल्ट निर्माता ओवरराइड करना चाहिए हार्डकोडेड सरणी के बजाय किसी अन्य स्रोत से ऑर्डर। आपके पास कई विकल्प हैं, यहां तक ​​कि इसे टेक्स्ट फ़ाइल से भी पढ़ना है। Web.config में मानक वर्ग को अपने साथ बदलने के लिए मत भूलना।

अधिक जानकारी के लिए StandardAnalyzer कक्षा के अन्य रचनाकार देखें। .NET Reflector यहां आपका मित्र है।

+0

धन्यवाद .. अगर आप कोड के दिल को साझा कर सकते हैं .. – rahul

+0

आपका क्या मतलब है? उपरोक्त उत्तर में जो कोड मैं संदर्भित करता हूं उसे Lucene.Net.dll (साइटकोर/बिन फ़ोल्डर में) में रखा गया है। आप .NET परावर्तक के साथ इस तृतीय-पक्ष लाइब्रेरी को ब्राउज़ कर सकते हैं। जो मैं आपके मामले में करने का प्रस्ताव करता हूं वह एक नई कक्षा बनाना है, इसे मानक विश्लेषक से प्राप्त करना है, और डिफ़ॉल्ट कन्स्ट्रक्टर को स्टॉप शब्दों को किसी अन्य तरीके से खोजना है (जिस तरह से आप चुनते हैं)। मानक विश्लेषक वर्ग के अन्य रचनाकारों के कोड में इसका उदाहरण हैं। –

+1

बीटीडब्ल्यू, एलेक्स श्याबा ने साइटकोर और लुसीन के साथ खोज के बारे में एक अद्भुत सारांश ब्लॉग पोस्ट प्रकाशित किया है: http://sitecoreblog.alexshyba.com/2011/02/8-reasons-to-use- new-search-in-sitecore। एचटीएमएल। यह पोस्ट विषय के बारे में विभिन्न संसाधनों के उपयोगी लिंक से भी भरा हुआ है। इस क्षेत्र में आगे बढ़ने से पहले इसे जांचना सुनिश्चित करें! –

4

yans पोस्ट की एक उदाहरण:

public class CaseAnalyzer : Lucene.Net.Analysis.Standard.StandardAnalyzer 
{ 
    private static Hashtable stopWords = new Hashtable(); //{{"by","by"}}; <-- Makes "by" a stopword that will not be matched in analyzer 
    public CaseAnalyzer() : base(Lucene.Net.Util.Version.LUCENE_29, stopWords) 
    {  
    } 
} 

इस

/configuration/sitecore/search/analyzer 

तहत web.config में पंजीकृत किया जाना चाहिए विश्लेषक पंजीकरण का एक उदाहरण

<caseanalyzer type="EBF.Business.Search.Analyzers.CaseAnalyzer, EBF.Business, Version=1.0.0.0, Culture=neutral"/> 

आप अन्त में बस अपने विश्लेषक को खोज विन्यास में पंजीकृत करने की आवश्यकता है जैसे थाई एस

<Analyzer ref="search/caseanalyzer" /> 
संबंधित मुद्दे