アプリケーションの検索エンジンとして SOLR を使用しています。しかし、現在、適切な結果が表示されていません。
私のスキーマ ファイルにはSubscriptionIds
、区切り記号で複数の値を保持する列があります。それらは、,,4588,,4585,,6966,,4855 として保存されます。
同様にABCId
、単一の値 SKJJ54855 を保持する別の列があります。
クエリを起動すると:
ABCId:(SKJJ54855)
値が ,,4588,,4585,,6966,,4855 のサブスクリプションを持つレコードが表示されます。
しかし、クエリを起動すると:
SubscriptionIds: (,4855,) && ABCId:(SKJJ54855)
それは私に結果をもたらしません!!!.
クエリを起動すると、もう 1 つのケース: SubscriptionIds: (,6966,) && ABCId:(SKJJ54855)
結果が得られます...ご参考までに、(,6966,) は SubscriptionIds リストの最後から 2 番目に配置されています。
なぜそれはとても奇妙な動作をしているのですか.!!!
私の Schema.xml ファイルの一部。
<fieldType name="textgen" 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>
<field name="SubscriptionIds" type="textgen" indexed="true" stored="true" />
<fieldType name="string" class="solr.StrField" sortMissingLast="true" omitNorms="true"/>
<field name="ABCId" type="string" indexed="true" stored="true"/>