我遇到Solr中特定關鍵字的搜索結果不一致。Solr:搜索結果不一致
行爲:
例如,關鍵字是'音樂',並有3個索引的文檔包含此關鍵字。
使用此關鍵字使用URL「http://abc.xyz.com:8983/solr/core3/select/?q=music」執行搜索,當我們再次點擊它時它會給出單個文件它將返回所有三個索引文件。我們再次擊中它將返回單個文檔。這就是一貫發生的不一致行爲。
我不能想到是什麼導致了這個問題。
它是Solr緩存嗎?它與其他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)您是否將核心(core3)設置作爲分佈式查詢的存根? 2)索引作業是否在後臺運行?您可以嘗試使用solr管理面板來詳細分析文檔如何與查詢匹配。 http://wiki.apache.org/solr/SolrAdminGUI – guruprasath 2013-03-25 12:33:57
我有多個核心設置,但不適用於分佈式查詢僅用於備份。我不確定如何在覈心之間對索引進行分區。回答你的第一個問題,考慮到只有一個核心,它被命名爲core3。對於第二個問題,我通過點擊https://abc.xyz.com/solr/core3/dataimport?command=full-import&clean=true手動執行索引。我應該從哪些部分着重分析這個特定問題? – Bhavesh 2013-03-25 13:51:01
1)關注管理面板查詢分析... 2)您還可以打開corename \ data \ index * .fdt文件中的索引文件,並查看您的關鍵字是否存在。這個索引文件不會是人類可讀的,這種分析不是可靠的,但對於簡單的文檔,您可以看到關鍵字是否在該索引中重複三次。此外,您能否解釋如何使用核心進行備份? – guruprasath 2013-03-25 14:11:20