Showing all posts tagged #solr:


SolrServer.commit() 拋出 500 Server Error 的 RumtimeException

Posted on April 9th, 2014

Client 透過 SolrServer.commit() 將資料送到Solr Server 時,
若拋出 500 Server Error 的 RumtimeException,
但資料卻有正常存入 Solrm,
可能就是 web.xml 的 Filter 先後順序的問題,
Solr 希望 SolrDispatchFilter 可以優先被處裡,
故將以下 filter 放到最前面即可


----

### 以下為 Server Error 時, Server 端的錯誤訊息

> 10047764 [qtp2912633-15] ERROR
> org.apache.solr.servlet.SolrDispatchFilter - null:
> org.apache.solr.common.SolrException:
> Solr requires that request parameters sent using application/x-www-form-urlencoded content-type can be read through therequest input stream.
> Unfortunately, the stream was empty / not available.
> This may be caused by another servlet filter calling ServletRequest.getParameter*() before SolrDispatchFilter, please remove it.


Solr 不斷字搜尋, Highlight

Posted on March 27th, 2014

修改檔案 schema.xml

必須將 autoGeneratePhraseQueries 改為 true,
若為 false, 則會將 query 字串斷成多個字元去交叉搜尋,
雖然搜尋的到, 但並不會正確 Highlight 該完整關鍵字串

(好像要 schema 1.4 版才支援, 1.3版若加上去會導致 Solr Server 開不起來)

autoGeneratePhraseQueries=true|false (in schema version 1.4 and later this now defaults to false)
  • schema example:

// 避免中文被斷詞 highlight
solrQuery .setParam ( "hl.usePhraseHighlighter", true );

第一次使用 SolrJ5.0 的各種小問題

Posted on February 25th, 2014

第一次使用 SolrJ5.0 的各種小問題

.
這次的需求是要將某一個系統上既有的文件資料發布到一個 Solr Server 上,
讓使用者可以簡單地進行搜尋,
.
因為要將文章發佈到 Server 上,
所以想先透過一個簡單的專案以 Main 去測試發布的功能,
.
沒想到我只寫了下面這一行 code 就遇到奇怪的問題:
.
HttpSolrServer server = new HttpSolrServer(WISE_SERVER_URL);
.

java.lang.UnsupportedClassVersionError: test/MainEntry : Unsupported major.minor version 51.0

搜尋一下發現應該是 JRE 版本不符合, 於是馬上改了 eclipse 上的 jre 設定 --> JRE1.7
.
.


改完, 緊接著發生另一個問題:
同樣只有這行new HttpSolrServer(WISE_SERVER_URL) :

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/http/NoHttpResponseException
..
前輩建議我先將這個 main 程式直接擺到運行 Solr Server 的專案底下試試,
沒想到居然可以運作了, 而且將 SolrInputDocument 可以丟到 Solr Server 上,
且 Server 可以正確進行索引及搜尋.
.
(我一開始以為這是改了 1.7 之後, JRE 不支援所產生的錯誤訊息...)
.
那麼應該就是環境的問題了!
.
所以首先將 WEB-INF/lib 底下的 Library 通通複製到新開的專案試試,
之後參考舊版的 SolrJ 所需的 jar 一個一個檢查哪一個是必要的.
.
沒錯, 問題是缺少了 HttpClient 的幾個相關的 Library,
最後專案裡是包含下面這幾個 jar
..
1. commons-codec-1.7.jar
2. commons-io-2.1.jar
3. httpclient-4.2.3.jar
4. httpcore-4.2.2.jar
5. httpmime-4.2.3.jar
6. jcl-over-slf4j-1.6.6.jar
7. log4j-1.2.17.jar
8. slf4j-api-1.6.6.jar
9. slf4j-log4j12-1.6.6.jar
10. solr-solrj-5.0-SNAPSHOT.jar
11. noggit-0.5.jar
..


但...
這次雖然 Main 是可以跑了, 但將 SolrInputDocument commit() 到 Server 就丟了錯誤訊息回來,
.

Server at http://127.0.0.1:8090/wise/wiseadm/core0 returned non ok status:500, message:Server Error

..
由於目前程式是可以運作, 只是 Server 會丟錯誤訊息回來...
所以暫時先這樣, 不過遲早要解決...或許哪天就這樣爆炸了!!


Liullen

Notes from my experience.