solr中配有分詞器,但分詞器裏面有大寫轉換爲小寫的過濾器時,數字就會被過濾。比如123中國ABC。123就會被過濾掉了,所以才查1|12|123都會失敗。
《Solr 數字字符不能搜索的一個問題》這篇博文說得還算詳細,我就是學這篇文章的。
根據賬號來搜索,當賬號在數據庫中是整型變量時,導入到solr中,配置單個數字的過濾字段時,是搜索不出任何信息的,這不知什麼原因,有時間要好好研究一下schema.xml這個配置文件先。
在schema.xml這個配置文件中加入字段類型:
<fieldType name="text_inclunum" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.EdgeNGramFilterFactory" minGramSize="1" maxGramSize="50" side="front"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.EdgeNGramFilterFactory" minGramSize="1" maxGramSize="50" side="front"/>
</analyzer>
</fieldType>
"solr.EdgeNGramFilterFactory" minGramSize="1" maxGramSize="50")這個就是從左到右一個一個分詞的。
讓我們的字段使用這個字段類型:
在分析裏面做一下分析,看能不能切割:
沒問題!接着在搜索裏面搜索:
也沒問題,最符合條件的排在前面,其次的排在後面。
剩下的事情就簡單了,按照前面的教程,改一下配置參數,輸入兩個字符就觸發:
最後呈現的結果爲:
前面的是最符合的: