基於lucene的搜索服務器(二)搜索端


上文: 基於lucene的搜索服務器 寫的是創建索引端。

今天寫一下搜索端的實現思路。

 

Restful Service的搜索服務:

搜索服務接受URL請求,通過Config解析一下url中的參數,得到有用的參數。如(關鍵字,搜索目標項目名,項目dll名,索引文件夾路徑,xml配置文件路徑,搜索關系,等等。)

再通過PraseDLL類和PraseModel類,結合具體的DLL文件和XML配置文件,解析出更具體的搜索條件(如哪個字段是哪個關鍵字,各個字段搜索時是或還是且等邏輯信息)。用QueryPrase得到Lucene的搜索條件Query,傳給Lucene,搜出符合條件的具體結果集。

因為搜索時,需求可能並不是對一個類的索引文件進行搜索,可能是搜索多個類的索引文件,然后讓結果混在一起,按照Lucene的評分排序,所以最后輸出的結果是一個List<object>。實體類屬性中如果有評分屬性,則保存了Lucene的打分情況(哪個屬性是評分屬性,哪個是搜索字段屬性,這些都是XML配置的或者是C#特性),然后用HighLight對其中搜出的內容加入關鍵字高亮,都根據配置來決定是怎么個高亮法,顯示摘要多少字。

最后再把List<object>裝換成一個Json格式的String輸出。

 

消費服務的項目客戶端:(用RestSharp消費RestFul服務)

這個貌似也沒啥可寫的。。。

我是用RestSharp寫的,構造需要的url,然后get請求,得到結果(json格式的string類型)后,再在前台把結果轉換成Json數據,這樣就能用了。

各個項目可以有自己的實現。

 

結束:

呵呵,只是記錄當時開發這個的思路,以后可以溫故而知新,看看現在的自己寫的代碼,思路有啥不足,也高興下自己的成長。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM