我有各種文本字段,有時它們的值在它們中有超/短劃線,例如,歐米加3。現在,當我搜索'歐米茄'或甚至'歐米茄'時,我會得到相關的結果,但是當我搜索'歐米茄-3'時,我得到零結果。Solr:使用'hypens'/破折號搜索返回零結果
在'WordDelimiterFilterFactory'中設置catenateAll = 1是否解決了這個問題?如果是,那麼我是否應該在查詢時間和索引時間將它設置爲1?還是有什麼我需要做的,以解決這個問題?謝謝!
以下是定義文本字段類型的模式部分。
<fieldType name="text" 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="1" />
<filter class="solr.LowerCaseFilterFactory" />
<filter class="solr.SnowballPorterFilterFactory" language="English" protected="protwords.txt" />
<filter class="solr.PorterStemFilterFactory"/>
</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="1" />
<filter class="solr.LowerCaseFilterFactory" />
<filter class="solr.SnowballPorterFilterFactory" language="English" protected="protwords.txt" />
<filter class="solr.PorterStemFilterFactory"/>
</analyzer>
</fieldType>
請包括相關查詢URL和哪個查詢解析器處理它。這很牽強,但如果Dismax正在處理它,'-3'將意味着''3'被禁止從結果中「:-)除了遠處的場景,破折號可能是*打破了*語法:字符在[ URL級別](http://www.w3schools.com/tags/ref_urlencode.asp)和[solr級別](http://lucene.apache.org/java/2_9_1/queryparsersyntax.html#Escaping+Special+Characters) – aitchnyu 2011-12-28 08:17:19