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) 코어 (core3) 설정을 분산 쿼리의 스텁으로 사용하고 있습니까? 2) 색인 작업이 백그라운드에서 실행되고 있습니까? solr admin 패널을 사용하여 문서가 쿼리와 어떻게 일치하는지 자세히 분석 할 수 있습니다. http://wiki.apache.org/solr/SolrAdminGUI – guruprasath
여러 코어를 설정했지만 백업을 위해 분산 쿼리를 수행하지 않았습니다. 코어간에 인덱스를 분할하는 방법을 잘 모르겠습니다. 귀하의 첫 번째 질문에 대한 답변은 단 하나의 코어가 있다고하고 그것은 core3라고합니다. 두 번째 질문의 경우 https://abc.xyz.com/solr/core3/dataimport?command=full-import&clean=true을 입력하여 색인 생성을 수동으로 수행합니다. 이 특정 문제에 대한 분석에서 어느 부분을 집중해야합니까? – Bhavesh
1) 관리자 패널 쿼리 분석에 중점을 둡니다 ... 2) corename \ data \ index * .fdt 파일 내에서 색인 파일을 열고 키워드가 있는지 확인할 수도 있습니다. 이 색인 파일은 사람이 읽을 수 없으며 이러한 종류의 분석은 어리석은 증거가 아니지만 단순한 문서의 경우 키워드가 해당 색인에서 세 번 반복되는지 확인할 수 있습니다. 또한 백업을 위해 코어를 사용하는 방법을 설명 할 수 있습니까? – guruprasath