2010-06-30 12 views
5

से पहले स्ट्रिप विराम चिह्न मुझे सोलर इंडेक्स से विराम चिह्न के साथ समस्या हो रही है जब विराम चिह्न साइन एक शब्द के बाद सही होता है तो यह शब्द ठीक से अनुक्रमित नहीं होता है।सोलर: इंडेक्स

उदाहरण के लिए: यदि हम "हैलो, जॉन" इंडेक्स करते हैं, तो संपत्ति "हैलो" कीवर्ड नहीं मिलेगी, जबकि अगर हम "हैलो" शब्द के बाद अल्पविराम को हटाते हैं तो कोई समस्या नहीं होगी।

क्या कोई फ़िल्टरफैक्टरी है जो विराम चिह्न को पट्टी करने का मानना ​​है? कोई विचार?

धन्यवाद, Bogdan।

उत्तर

6

यह WordDelimiterFilterFactory के साथ किया जाता है। GenerWordParts = 1 सेट करें।

PatternTokenizerFactory भी उपयोग किया जा सकता है, लेकिन मैंने कभी कोशिश नहीं की है।

+0

मेरे जैसे बढ़त के मामलों के साथ लोगों के लिए: generateWordParts = 1 सामान्य रूप से काम करेंगे, लेकिन अगर आप कर रहे हैं कि मैं क्या कर रहा हूँ, ऐसा नहीं होगा: मैं उपयोग कर रहा हूँ मानचित्र के लिए डब्ल्यूडीएफएफ की 'प्रकार' विशेषता। और अल्फा को $, ताकि मैं '$ 10.00' जैसी शर्तों से मेल खा सकूं। इस शब्द के हिस्से के रूप में उपसर्ग और प्रत्यय अवधि को शामिल करने का नकारात्मक पक्ष प्रभाव पड़ता है। तो मेरे मामले में @claytron का जवाब बेहतर फिट हो सकता है। –

6

आप इस के साथ शुरुआत और अनुगामी विराम चिह्न पट्टी solr.PatternReplaceFilterFactory उपयोग कर सकते हैं:

<filter class="solr.PatternReplaceFilterFactory" 
    pattern="^\p{Punct}*(.*?)\p{Punct}*$" 
    replacement="$1"/> 

और शुरुआत और अंत में सभी विराम पट्टी यदि आप चाहते थे, (उदाहरण के लिए) सामने डॉलर हस्ताक्षर को छोड़कर एक शब्द के, तो आप इस इस्तेमाल कर सकते हैं:

<filter class="solr.PatternReplaceFilterFactory" 
    pattern="^[\p{Punct}&&[^$]]*(.*?)\p{Punct}*$" 
    replacement="$1"/> 
+0

मेरा मानना ​​है कि मेसन के संपादन ने इस जवाब को बहुत मूल रूप से बदल दिया है। उसे एक और जवाब जोड़ना चाहिए था। – CorayThan

+0

@ कोरयहान यह बदलाव का कितना कट्टरपंथी है? मैंने क्लेट्रॉन के मूल उत्तर पर रेगेक्स को थोड़ा tweaked किया क्योंकि विराम चिह्न को केवल बाद में फेंकने के लिए अनावश्यक है, और उसके बाद एक regx आगे tweak कैसे एक उदाहरण जोड़ा गया है अगर कोई एक विशिष्ट चरित्र के लिए सभी विराम चिह्न को पट्टी करना चाहता है ... कुछ यह बहुत उपयोगी हो सकता है। न तो मेरे लिए एक पूरी तरह से अलग जवाब की तरह लग रहा है, इसलिए इसे पोस्ट करने का अधिकार नहीं लगता है। –

0

उपयोग PatternReplaceFilterFactory

<!-- remove punctuation --> 
    <filter class="solr.PatternReplaceFilterFactory" pattern="^(\p{Punct}*)(.*?)(\p{Punct}*)$" replacement="$2"/> 
    <filter class="solr.LowerCaseFilterFactory"/> 
<filter class="solr.StandardFilterFactory"/> 
    <filter class="solr.RemoveDuplicatesTokenFilterFactory"/> 
    </analyzer> 

...

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