2013-03-25 4 views
4

Solr의 특정 키워드에 대한 검색 결과가 일관되지 않습니다.Solr : 일치하지 않는 검색 결과

동작 :

예 : 키워드는 '음악'이며이 키워드가 포함 된 3 개의 문서 색인이 생성됩니다.

"http://abc.xyz.com:8983/solr/core3/select/?q=music"URL을 사용하여이 키워드로 검색을 수행하면, 다시 한 번 누르면 단일 문서가 제공되어 3 개의 색인 된 문서가 모두 반환됩니다. 다시 한번 우리는 그것이 하나의 문서를 돌려 줄 것이라고 명중했다. 일관성없는 동작이 일관되게 발생하는 방식입니다.

나는이 문제의 원인을 생각할 수 없다.

솔라 캐시입니까? 다른 Solr 구성과 관련이 있습니까?

SOLR 버전 : solrconfig.xml에서 3.6.1

중요 구성

<requestHandler name="/select" class="solr.SearchHandler"> 
    <lst name="defaults"> 
     <str name="echoParams">explicit</str> 
     <int name="rows">50</int> 
     <str name="df">keywords</str> 
    </lst> 
</requestHandler> 
<requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler"> 
    <lst name="defaults"> 
     <str name="config">db-data-config-xsl.xml</str> 
    </lst> 
</requestHandler> 

<filterCache class="solr.FastLRUCache" size="512" initialSize="512" autowarmCount="0"/> 
<queryResultCache class="solr.LRUCache" size="512" initialSize="512" autowarmCount="0"/> 

의 schema.xml

누군가가 안내 할 수있는 경우
 </analyzer> 
    </fieldType> 
    <fieldtype name="string" class="solr.StrField" sortMissingLast="true" omitNorms="true"/> 
    <fieldType name="date" class="solr.TrieDateField" precisionStep="0" positionIncrementGap="0"/> 
    <fieldType name="int" class="solr.TrieIntField" precisionStep="0" positionIncrementGap="0"/> 
    <fieldType name="sint" class="solr.SortableIntField" sortMissingLast="true" omitNorms="true"/> 
    <fieldType name="tint" class="solr.TrieIntField" precisionStep="8" positionIncrementGap="0"/> 
    <fieldType name="text" class="solr.TextField" positionIncrementGap="100"> 

     <analyzer type="query"> 
      <tokenizer class="solr.WhitespaceTokenizerFactory"/> 
      <filter class="solr.LowerCaseFilterFactory"/> 
      <filter class="solr.SnowballPorterFilterFactory" language="English"/> 
     </analyzer> 
    </fieldType> 
    <fieldType name="shingleString" class="solr.TextField" positionIncrementGap="100" omitNorms="true"> 
     <analyzer type="index"> 
      <tokenizer class="solr.KeywordTokenizerFactory"/> 
     </analyzer> 
     <analyzer type="query"> 
      <tokenizer class="solr.WhitespaceTokenizerFactory"/> 

      <filter class="solr.PositionFilterFactory" /> 
     </analyzer> 
    </fieldType> 
    <fieldType name="facet_tex" class="solr.TextField" sortMissingLast="true" omitNorms="true"> 
     <analyzer> 

      <tokenizer class="solr.KeywordTokenizerFactory"/> 
      <filter class="solr.LowerCaseFilterFactory" /> 
      <!-- The TrimFilter removes any leading or trailing whitespace --> 
      <filter class="solr.TrimFilterFactory" />   
      <!--filter class="solr.PatternReplaceFilterFactory" pattern="([^a-z])" replacement="" replace="all" /--> 
     </analyzer> 
    </fieldType> 

    <fieldType name="facet_comma" class="solr.TextField" sortMissingLast="true" omitNorms="true"> 
     <analyzer> 
      <tokenizer class="solr.PatternTokenizerFactory" pattern=","/> 

      <filter class="solr.LowerCaseFilterFactory" /> 
      <!-- The TrimFilter removes any leading or trailing whitespace --> 
      <filter class="solr.TrimFilterFactory" /> 
      <filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>    
      <!--filter class="solr.PatternReplaceFilterFactory" pattern="([^a-z])" replacement="" replace="all" /--> 
     </analyzer> 
    </fieldType> 

     <fieldType name="text_auto" class="solr.TextField"> 
      <analyzer> 
       <tokenizer class="solr.PatternTokenizerFactory" pattern=","/> 
       <filter class="solr.LowerCaseFilterFactory"/> 
       <filter class="solr.TrimFilterFactory" /> 
       <filter class="solr.EdgeNGramFilterFactory" minGramSize="1" maxGramSize="25" side="front" /> 
      </analyzer> 
     </fieldType> 


    <fieldType name="text_general" class="solr.TextField" positionIncrementGap="100"> 
     <analyzer type="index"> 
      <tokenizer class="solr.StandardTokenizerFactory"/> 
      <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true" /> 

      <filter class="solr.LowerCaseFilterFactory"/> 
     </analyzer> 
     <analyzer type="query"> 
      <tokenizer class="solr.StandardTokenizerFactory"/> 
      <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true" /> 
      <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/> 
      <filter class="solr.LowerCaseFilterFactory"/> 
     </analyzer> 
    </fieldType> 
    <fieldType name="text_en" class="solr.TextField" positionIncrementGap="100"> 
     <analyzer type="index"> 
      <charFilter class="solr.PatternReplaceCharFilterFactory" pattern="," replacement=" "/> 

      <tokenizer class="solr.WhitespaceTokenizerFactory"/> 

      <filter class="solr.LowerCaseFilterFactory"/> 

     </analyzer> 
     <analyzer type="query"> 
      <charFilter class="solr.PatternReplaceCharFilterFactory" pattern="," replacement=" "/> 

      <tokenizer class="solr.WhitespaceTokenizerFactory"/> 

      <filter class="solr.LowerCaseFilterFactory"/> 

     </analyzer> 
    </fieldType> 
    <fieldType name="text_en_comma" class="solr.TextField" positionIncrementGap="100"> 
     <analyzer type="index"> 

      <charFilter class="solr.PatternReplaceCharFilterFactory" pattern="," replacement=" "/> 

      <tokenizer class="solr.WhitespaceTokenizerFactory"/> 
      <filter class="solr.TrimFilterFactory" /> 

      <filter class="solr.StopFilterFactory" 
      ignoreCase="true" 
      words="lang/stopwords_en.txt" 
      enablePositionIncrements="true" /> 
      <filter class="solr.LowerCaseFilterFactory"/> 
      <filter class="solr.EnglishPossessiveFilterFactory"/> 
      <filter class="solr.KeywordMarkerFilterFactory" 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="lang/stopwords_en.txt" 
      enablePositionIncrements="true"    /> 
      <filter class="solr.LowerCaseFilterFactory"/> 
      <filter class="solr.EnglishPossessiveFilterFactory"/> 

     </analyzer> 
    </fieldType> 

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

      <filter class="solr.LowerCaseFilterFactory" /> 

      <filter class="solr.TrimFilterFactory" /> 

      <filter class="solr.PatternReplaceFilterFactory" 
      pattern="([^a-z])" replacement="" replace="all"/> 
     </analyzer> 
    </fieldType> 
    <fieldType name="text_en_suggest" class="solr.TextField" positionIncrementGap="100" omitNorms="true"> 
     <analyzer type="index"> 
      <tokenizer class="solr.PatternTokenizerFactory" pattern=","/> 
      <filter class="solr.TrimFilterFactory" /> 
      <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_en.txt" enablePositionIncrements="true" /> 
      <filter class="solr.LowerCaseFilterFactory"/> 
      <filter class="solr.EnglishPossessiveFilterFactory"/> 
     </analyzer> 
     <analyzer type="query"> 
      <tokenizer class="solr.PatternTokenizerFactory" pattern=","/> 
      <filter class="solr.TrimFilterFactory" /> 
      <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_en.txt" enablePositionIncrements="true"/> 
      <filter class="solr.LowerCaseFilterFactory"/> 
      <filter class="solr.EnglishPossessiveFilterFactory"/> 
     </analyzer> 
    </fieldType> 
</types> 

<fields> 

    <field name="section"  type="string" indexed="true" stored="true" multiValued="false" /> 
    <field name="url" type="string" indexed="false" stored="true" multiValued="false" /> 
    <field name="title" type="string" indexed="true" stored="true" multiValued="false" /> 
    <field name="description"  type="string" indexed="true" stored="true" multiValued="false" /> 
    <field name="keywords"  type="text_en_comma" indexed="true" stored="true" multiValued="true" /> 
    <field name="category" type="facet_comma" indexed="true" stored="true" multiValued="false" /> 
    <field name="robots" type="string" indexed="true" stored="true" multiValued="false" /> 
    <field name="keywords_suggest"  type="text_en_suggest" indexed="true" stored="true" multiValued="true" /> 

</fields> 

<copyField source="keywords" dest="keywords_suggest"/> 



<uniqueKey>title</uniqueKey> 


<defaultSearchField>keywords</defaultSearchField> 


<solrQueryParser defaultOperator="AND"/> 

감사하겠습니다.

덕분에, Bhavesh

+1

몇 가지 질문 : 1) 코어 (core3) 설정을 분산 쿼리의 스텁으로 사용하고 있습니까? 2) 색인 작업이 백그라운드에서 실행되고 있습니까? solr admin 패널을 사용하여 문서가 쿼리와 어떻게 일치하는지 자세히 분석 할 수 있습니다. http://wiki.apache.org/solr/SolrAdminGUI – guruprasath

+0

여러 코어를 설정했지만 백업을 위해 분산 쿼리를 수행하지 않았습니다. 코어간에 인덱스를 분할하는 방법을 잘 모르겠습니다. 귀하의 첫 번째 질문에 대한 답변은 단 하나의 코어가 있다고하고 그것은 core3라고합니다. 두 번째 질문의 경우 https://abc.xyz.com/solr/core3/dataimport?command=full-import&clean=true을 입력하여 색인 생성을 수동으로 수행합니다. 이 특정 문제에 대한 분석에서 어느 부분을 집중해야합니까? – Bhavesh

+0

1) 관리자 패널 쿼리 분석에 중점을 둡니다 ... 2) corename \ data \ index * .fdt 파일 내에서 색인 파일을 열고 키워드가 있는지 확인할 수도 있습니다. 이 색인 파일은 사람이 읽을 수 없으며 이러한 종류의 분석은 어리석은 증거가 아니지만 단순한 문서의 경우 키워드가 해당 색인에서 세 번 반복되는지 확인할 수 있습니다. 또한 백업을 위해 코어를 사용하는 방법을 설명 할 수 있습니까? – guruprasath

답변

0

은 PARAM timeAllowed은, solrconfix.xml 일부 핸들러에서

또한

질문을 설명 할 수 체크 : 색인이 얼마나 큰? 당신의 solrconfix.xml과 scheme.xml 파일을보기 위해 greate하는 방법을 알려줍니다.

+0

색인은 매우 작아서 단지 40 개 문서입니다. Solr 3.6.1 버전을 사용하고 있습니다. solrconfig.xml은 꽤 큰 문서이지만 위의 중요한 구성을 살펴 보는 것이 중요합니다. – Bhavesh

+0

당신은 당신의 scheme.xml (당신이 커스텀 타입을 사용한다면 필드 블록과 일부 타입 만)을 공유 할 수 있습니까? – iMysak

+0

파일을 공유하는 것이 가능한지 또는 전체를 여기에 붙여 넣어야합니까 ?? – Bhavesh