2010-02-08 20 views
6

मैं कुछ पहचाने गए खोज कर रहा हूं लेकिन कुछ समस्याएं हैं। जब वांछित खोज क्षेत्र में कई शब्द होते हैं तो मुझे वांछित परिणाम नहीं मिलते हैं।पहलू खोज के साथ समस्या

उदाहरण: निम्नलिखित प्रविष्टियों के साथ "जानवर" क्षेत्र:

 A horse 

     Black horse 

     Black horse 

ला faceted खोज वापस भेजता है "घोड़ा (3)" सबसे अच्छा परिणाम के रूप में है, जबकि मैं वापस "ब्लैक घोड़ा प्राप्त करना चाहते हैं (2) "।

और यह schema.xml है। खोज क्षेत्र बुस्कुडा है, और पहलूदार क्षेत्र सुपरफाइसी है। मुझे लगता है कि मैंने इन दो क्षेत्रों के लिए परिभाषित प्रकारों के अधिकांश सकारात्मक संयोजनों का प्रयास किया है लेकिन अभी भी काम नहीं करता है।

<?xml version="1.0" encoding="UTF-8" ?> 
     <schema name="example" version="1.2"> 
     <types> 

    <fieldType name="string" class="solr.StrField"/> 

    <fieldType name="facet_texPersonal" class="solr.StrField" sortMissingLast="true" omitNorms="true"> 
      <analyzer> 
      <tokenizer class="solr.KeywordTokenizerFactory"/> 
      </analyzer> 
      </fieldType> 

      <fieldType name="facet_tex" class="solr.TextField" sortMissingLast="true" omitNorms="true"> 
      <analyzer> 
      <tokenizer class="solr.KeywordTokenizerFactory"/> 
      <filter class="solr.LowerCaseFilterFactory" /> 
      <filter class="solr.TrimFilterFactory" /> 
      </analyzer> 
      </fieldType> 

      <fieldType name="text" class="solr.TextField" positionIncrementGap="100"> 
      <analyzer type="index"> 
      <tokenizer class="solr.WhitespaceTokenizerFactory"/> 
      <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" 
      enablePositionIncrements="true"/> 
      <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" 
      catenateWords="1" catenateNumbers="1" catenateAll="0" splitOnCaseChange="1"/> 
      <filter class="solr.LowerCaseFilterFactory"/> 
      <filter class="solr.SnowballPorterFilterFactory" language="English" protected="protwords.txt"/> 
      </analyzer> 
      <analyzer type="query"> 
      <tokenizer class="solr.WhitespaceTokenizerFactory"/> 
      <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/> 
      <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" 
      enablePositionIncrements="true"/> 
      <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" 
      catenateWords="0" catenateNumbers="0" catenateAll="0" splitOnCaseChange="1"/> 
      <filter class="solr.LowerCaseFilterFactory"/> 
      <filter class="solr.SnowballPorterFilterFactory" language="English" protected="protwords.txt"/> 
      </analyzer> 
      </fieldType> 

      <fieldType name="textTight" class="solr.TextField" positionIncrementGap="100" > 
      <analyzer> 
      <tokenizer class="solr.WhitespaceTokenizerFactory"/> 
      <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="false"/> 
      <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt"/> 
      <filter class="solr.WordDelimiterFilterFactory" generateWordParts="0" generateNumberParts="0"  catenateWords="1" catenateNumbers="1" catenateAll="0"/> 
      <filter class="solr.LowerCaseFilterFactory"/> 
      <filter class="solr.SnowballPorterFilterFactory" language="English" protected="protwords.txt"/> 
      <filter class="solr.RemoveDuplicatesTokenFilterFactory"/> 
      </analyzer> 
      </fieldType> 

      <fieldType name="textMultidioma" class="solr.TextField" positionIncrementGap="100"> 
      <analyzer type="index"> 
      <tokenizer class="solr.WhitespaceTokenizerFactory"/> 
      <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" 
       enablePositionIncrements="true" /> 
      <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" 
       catenateWords="1" catenateNumbers="1" catenateAll="0" splitOnCaseChange="0"/> 
      <filter class="solr.LowerCaseFilterFactory"/> 
      </analyzer> 
      <analyzer type="query"> 
      <tokenizer class="solr.WhitespaceTokenizerFactory"/> 
      <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/> 
      <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true"/> 
      <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" 
      catenateWords="0" catenateNumbers="0" catenateAll="0" splitOnCaseChange="0"/> 
      <filter class="solr.LowerCaseFilterFactory"/> 
      </analyzer> 
      </fieldType> 

     </types> 

     <fields> 
      <field name="BUSQUEDA" type="facet_tex" indexed="true" stored="true"/> 
      <field name="SUPERFICIE" type="facet_tex" indexed="true" stored="true"/> 
      <field name="NOMBRE" type="string" indexed="true" stored="true"/> 
     </fields> 
     <uniqueKey>NOMBRE</uniqueKey> 
     <defaultSearchField>BUSQUEDA</defaultSearchField></schema> 

कोई सुझाव?

अग्रिम में एक गुच्छा धन्यवाद!

+0

क्या आपने प्रत्येक फ़ील्ड प्रकार के परिवर्तन के बाद अपनी अनुक्रमणिका का पुनर्निर्माण किया? –

+0

मैंने इसे करने की कोशिश की है लेकिन कुछ भी नया नहीं हुआ। मुझे लगता है कि मुझे कोई गलती है जिसे मैं नोटिस नहीं कर सकता। – Carlos

उत्तर

3

आपको एक गैर-टोकनयुक्त फ़ील्ड (फ़ील्ड क्लास सोलर। एसआरएफआईल्ड, या solr.KeywordTokenizerFactory का उपयोग करके) पर फ़ैकेट करना होगा। This thread इसे विस्तार से बताता है।

+0

मैं इसे करने की कोशिश कर रहा हूं, लेकिन ऐसा लगता है कि यह काम नहीं कर रहा है। मुझे अभी भी एक ही परिणाम मिल रहा है। वैसे भी, आपकी मदद के लिए धन्यवाद – Carlos

+0

@ करलोस: आपने क्या प्रयास किया है? अपने Schema.xml पोस्ट –

+0

मैं BUSQUEDA "facet_texPersonal" और मैं क्या मिलता है होने के साथ की कोशिश की है: एक (1) काला (2) ऐसा लगता है कि अगर यह केवल पहला शब्द माना जाता है – Carlos

3

हमारे पास एक परियोजना के लिए काम कर रहे बहु-शब्द पहलू वाले क्षेत्र थे जो मैंने पहले किया था।

<schema name="example" version="1.2"> 
<types> 
    <fieldType name="string" class="solr.StrField" sortMissingLast="true" omitNorms="true" /> 
    ... 
</types> 
<fields> 
    <field name="grant_type" type="string" indexed="true" stored="true" /> 
    ... 
</fields> 
</schema> 

मौरिसियो पहलू क्षेत्र गैर tokenized होने के लिए किया गया है पर प्रकाश डाला गया है (अलग शब्द में विभाजित नहीं): यहाँ (का हिस्सा) Schema.xml इस से संबंधित है। उपरोक्त कॉन्फ़िगर में हम 'solr.StrField' (गैर-टोकनयुक्त) फ़ील्ड प्रकार का उपयोग कर रहे हैं।

पहलू वाले फ़ील्ड प्रकारों के लिए और संकेत (लोअरकेस में कनवर्ट नहीं करना, विराम चिह्न को अलग नहीं करना आदि) the Solr Faceting Overview page पर पाया जा सकता है।

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