2013-03-25 3 views
4

Я испытываю непоследовательный результат поиска по определенному ключевому слову в Solr.Solr: Непонятные результаты поиска

Поведение:

Для примера. Ключевое слово - это «музыка» и содержит 3 документа с индексом, содержащими это ключевое слово.

Выполнение поиска по этому ключевому слову с использованием URL-адреса «http://abc.xyz.com:8983/solr/core3/select/?q=music», он даст единый документ, когда мы снова его ударим, он вернет все три индексированных документа. Снова мы ударим, он вернет один документ. Это то, как непоследовательное поведение происходит последовательно.

Я не могу придумать, что вызывает проблему.

Является ли это Solr cache? Это как-то связано с другой конфигурацией Solr?

Solr Версия: 3.6.1

Важно Конфигурация из solrconfig.xml

<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, чтобы дать вам подробный анализ того, как документы соответствуют запросу. 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

Проверьте ваши пары timeAllowed, он может быть описаны в некотором обработчике в solrconfix.xml

Также вопросов: насколько велика ваш индекс? как mush docs, wil be greate, чтобы посмотреть ваши файлы solrconfix.xml и schem.xml.

+0

Индекс довольно маленький, всего 40 документов. Я использую версию Solr 3.6.1. solrconfig.xml - довольно большой документ, однако важно, пожалуйста, взглянуть на важную конфигурацию выше. – Bhavesh

+0

можете ли вы поделиться своим schem.xml (только блоки блоков и некоторые типы, если вы используете пользовательские типы)? – iMysak

+0

Можно ли поделиться файлом или мне нужно вставить весь материал здесь? – Bhavesh

Смежные вопросы