2010-01-26 66 views
2

我一直在研究一個網站的想法,一般的概念是文件的全文搜索,也允許基於這些評級的用戶評分我想提高項目的價值在Lucene索引。但我試圖找出是否應該擴展JackRabbit或從Lucene基礎構建。有沒有什麼好的方法可以用這種方式來擴展JackRabbit並影響索引,還是最好直接在Lucene之外工作?擴展JackRabbit或從Lucene構建?

無論哪種方式,我去我強烈傾向於在可搜索插件上使用groovy在grails上,或直接與JackRabbit一起工作是否有任何主要原因我應該堅持使用Java?

澄清:

我想提高的基礎上平均用戶評價一個項目的項目,是JackRabbit用足夠開放,還是足夠擴張在那裏我可以捕獲用戶評級然後讓這些效果在索引中JackRabbit用或者是它到目前爲止離開了JackRabbit的核心,我應該從Lucene構建起來?

回答

2

我推薦使用JCR,並在其後面實施Jackrabbit。 JCR允許您將存儲的內容和存儲方式分開。

通過保持在JCR框架內,您應該能夠輕鬆地在JCR實現之間切換。 (有幾個,不僅僅是Apache的。)即使在Jackrabbit中也有許多持久性管理者,而不僅僅是Lucene。當您想在存儲空間和性能之間進行折衷時,這種靈活性非常有用。

JCR已經包含全文搜索和維護用戶評分的能力。它應該適合您的項目。

1

是否有任何主要原因我應該堅持使用Java?

不是。正如你可能已經知道的那樣,你可以在Groovy/Grails中使用任何Java庫,所以在Java中你不能在Groovy中做什麼。雖然相反也是如此,但根據我的經驗,它需要更多(樣板)代碼才能在Java中完成任務。

儘管Java比Groovy快很多,但這並不一定意味着如果用Java編寫Java應用程序將會更快,因爲瓶頸可能是數據庫而不是代碼執行。

至於你是否應該使用Lucene/Searchable或者JackRabbit,很難說不知道你能做什麼。你到目前爲止告訴我們的是,你想索引文件並增強索引中的某些項目。你當然可以用Lucene做這兩個。

+0

我試圖澄清我問題,主要問題是圍繞JackRabbit與Lucene。隨着groovy問題的雙重檢查,無論是JackRabbit還是Lucene都沒有問題。 – 2010-01-26 16:46:56

1

我會建議在Lucene之上使用JCR /兔崽子了幾個原因:

1)你的倉庫結構,可以很容易地支持與存儲所有元數據,包括所有者的子節點文檔節點,評級,標記,評論等

2)JCR非常適合基於文檔/節點的應用程序開發,在框架級別提供了很多繁重的工作,但在應用程序級別上卻不盡如人意。

+0

所以有一種方法可以使元數據的子節點有效地提升搜索中的父節點? – 2010-01-26 18:40:08

1

我建議你使用Apache Sling,它內置了Jackrabbit/Lucene。 大多數提交者也參與了Jackrabbit,所以它的設計可以與它一起工作 - 甚至更好,它的設計可以在其上運行。

Sling的一個很好的功能是它將整個JCR存儲庫掛載到URL空間並通過REST端點公開它。 所以你可以通過簡單的HTTP請求來訪問你的文檔/元數據。它還允許您編寫自己的servlet並將它們公開爲REST端點。 (這是非常容易 - 沒有擺弄與applicationContext.xml的文件,只需1個註解)

它還允許你寫JSP,ESP,時髦,......

+0

聽起來很有意思,它如何讓你實現搜索結果? – 2010-02-13 14:37:42

+1

我不認爲你需要爲此擴展Jackrabbit/Lucene。我可能會在名爲'my:score'的項目上添加一個屬性,並且每次都留下一些積極的反饋,我會增加這個值。然後,我會做一個標準查詢,並按照'my:score'降序排列項目。爲了保持速度,您可能必須爲「my:score」屬性創建一個索引。 – Simon 2010-02-15 00:09:13