2010-05-10 201 views
5

我是solr的新手。 我開發了一個使用索引索引的網站。 我想處理solr讀取和寫入索引期間可能發生的超時。請指導我如何處理這些異常。 我使用solrj作爲solr客戶端,我的網站和solr服務器在tomcat上運行。處理Solr讀取和寫入超時異常

Thnak you!

+0

當你得到這些超時?你多久做一次?檢查Solr日誌,看看是否沒有任何警告或錯誤。 – 2010-05-10 12:23:52

+1

嗨Maurico, 感謝您的關注! 當我發射搜索查詢時,我收到了這些超時。這些例外情況並不常見。 我在我的tomcat日誌中獲取讀取超時異常: org.apache.solr.client.solrj.SolrServerException:java.net.SocketTimeoutException:讀取超時在org.apache.solr.client.solrj.impl.CommonsHttpSolrServer .request(CommonsHttpSolrServer.java:243) at org.apache.solr.client.solrj.SolrServer.optimize(SolrServer.java:94) at org.apache.solr.client.solrj.SolrServer.optimize(SolrServer.java :82) ..... ..... – 2010-05-10 12:48:14

+0

堆棧跟蹤表示超時發生在優化操作期間,而不是查詢......您是否在每次啓動查詢時進行優化? – 2010-05-10 19:03:56

回答

11

提交和優化是爲搜索者提供更新的操作。它們旨在在更新之後運行,而不是在查詢之前運行。

此外,他們是昂貴的操作,這就是爲什麼你會得到零星的超時。除非您有特殊要求,否則我建議在solrconfig.xml中設置<autoCommit/>選項。如名稱所示,它將根據可配置標準自動發出提交,如未提交文檔的最大數量或添加文檔後的最長時間。

Optimize比Commit更昂貴,它基本上會重寫索引。 Optimize的頻率取決於Commit的更改頻率以及每次提交的更改次數。

參見:

+0

非常感謝Mauricio。 我已經清除了所有的疑惑,並相應地實現了。現在我只使用提交索爾索引時添加或刪除。 謝謝! – 2010-05-12 08:20:53