在我們使用solr的時候,我們會遇到關鍵詞檢索跟長文本檢索等需求,在工作中很多時候接觸的是關鍵詞所以沒怎么去關注長文本的檢索,最近在項目中遇到了長文本的檢索,所以在此寫下自己的總結,希望對遇到相應問題的朋友一個參考.
1.先上官方解決方法
官方地址,solr官方為我們提供了分析器的配置方法,大家可以點擊鏈接,查看更加詳細的文檔。
- 官方推薦在schema.xml中使用添加field type來解決長文本檢索的問題,在長文本中,我們是無法通過某個關鍵詞去檢索到相對于的文本的,所有通過添加相對于的field type來對長文本進行分析、分詞形成一個關鍵詞數(shù)組,這時我們再通過關鍵詞就可以檢索到相對于的文本了。
<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" />
<!-- in this example, we will only use synonyms at query time
<filter class="solr.SynonymFilterFactory" synonyms="index_synonyms.txt" ignoreCase="true" expand="false"/>
-->
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" />
<filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
</fieldType>
# 然后在指定field時,再指定定義好的field type
<field name="title" type="text_general" indexed="true" stored="true"/>
<field name="name" type="text_general" indexed="true" stored="true"/>
其實在solr中已經(jīng)存在text_general這個filed type大家可以在此基礎上進行增刪