天天看點

Solr 踩過的坑

1.solrj查詢出的SolrDocument轉成SolrInputDocument後不能删除字段,無奈隻能new一個SolrInputDocument,然後将原來的key-value拷貝到新new的對象上。

2.cloud模式下solrj不能下載下傳zk的配置檔案,ZkController.downloadConfigDir總是報No Node for xxx 這樣的錯。在tomcat啟動的時候指定要上傳到zk的本地檔案夾位置。

3.cloud模式下solrj不能上傳配置檔案,ZkController.uploadConfigDir不報錯,就是不能上傳成功,未找到原因和解決辦法。

4.*_t字段加一個不分詞的copy字段。

5.加了*_t_facet字段後,以後修改solr文檔時*_t_facet以前的值會不斷增加(舊值還在),就算把*_t的字段删除,*_t_facet的字段也會繼續存在。沒辦法,每次更新文檔的時候隻能一把更新整個文檔,更新整個文檔的時候還得把*_t_facet和_version_字段删除。SolrInputDocument不給删除字段怎麼辦?看上面第1個坑。

6.一開始沒注意,後來才發現如果某個字段是分詞的字段,那麼facet這個字段的結果就是分詞後的結果。一般情況下,要facet的字段需要配置成不分詞的。這個容易,給源字段加一個copy字段好了。那動态字段怎麼加不分詞的copy字段呢?看上面第4個坑。

舉個栗子:

假如有兩個文檔,name_t和email_t是分詞的。email_t_facet是不分詞的。注意email_t_facet是自動生成的。

Solr 踩過的坑
Solr 踩過的坑

email_t也是分詞的。facet是分詞後的結果,太散了

Solr 踩過的坑

email_t_facet是不分詞的。facet的結果是我們想要的

Solr 踩過的坑

7.schema.xml中文檔的id不能配置成分詞的,否則會出現文檔重複的問題。

繼續閱讀