solr學習筆記(二):進階
如下:
<field name="text" type="text" stored="false" indexed="false"/>
2. <分詞外掛>
analyzer是tokenizer和filter的組合: 覆蓋public TokenStreamComponents createComponents(String fieldName, Reader reader) 方法,首先通過各種Tokenizer從reader中獲取tokenizer,給TokenFilter產生各種TokenStream result,再進行過濾.. 最後返回new TokenStreamComponents(tokenizer, result)
TokenizerFactory 需要重寫Tokenizer create(Reader input)方法,smartcn直接返回了SentenceTokenizer
TokenFilterFactory 需要重寫 TokenFilter create(TokenStream input) smartcn直接返回了WordTokenFilter(input)
上述兩個方法可以給solr在schema.xml上配置分詞的組合細節的,如果直接用analyzer,那就不用再xml中配置其他過濾器之類的。
可能一般需要自己的TokenFilter(smartcn的WordTokenFilter比較好理解); 4.0和3.0比在介面上有些許不同 需要特別留意。
IK分詞器中並沒有TokenFilter 概念,而是在Tokenizer 中直接完成分詞過程(注意Tokenizer 和TokenFilter 都需要覆蓋的是boolean incrementToken()方法,並在類裡面保留當前token資訊)
solr的分詞基本與lucene的分詞結構一致,多了直接暴露分詞器核心的Factory
HttpSolrServer 核心包裝了一個httpClient,會對請求結果根據responseWriter進行再次解析.
請求方面: