簡體   English   中英

如何在Solr上存儲java對象

[英]How to store java objects on Solr

我想將java對象存儲為Solr文檔的一部分。 它們不需要被解析或搜索,只能作為文檔的一部分返回。 我可以將它們轉換為json或XML並存儲文本,但我更喜歡更高效的東西。 如果我可以使用Java序列化然后將二進制blob添加到文檔中,那么它可能是理想的。 我知道用base64轉換二進制blob的選項,但我想知道是否有更有效的方法。

由於您可以在Solr中構造一個id以傳遞任何文檔,因此您可以以其他方式存儲此對象(例如,數據庫),並在從solr獲取id時查詢它。

例如,我們將網頁存儲在Solr中。 當我們索引它時,我們正在創建一個id,它與數據庫中ORM創建的WebPage對象的id相匹配

執行搜索時,我們返回id並從數據庫加載java對象

無需將其存儲在solr中(已用於存儲和索引文檔)

我同意你不應該使用Solr作為數據庫,特別是不能用於二進制數據。

我建議你使用一個NoSQL數據庫(比如Neo4j,MongoDB,CouchDB,Riak,...)cuz'大多數都支持json / bson,並且可以很好地使用Solr,實際上也是NoSQL,文檔類型,搜索 - 專用數據存儲。

例如,您可以創建自定義Solr請求處理程序,該處理程序將使用返回文檔的文檔ID(主鍵)來查詢NoSQL數據存儲並撰寫搜索響應。 此外,您可以在收到Solr響應后直接從客戶端應用程序查詢NoSQL數據庫。

我不同意前兩個答案的意見。

在某些情況下,額外的數據庫調用完全沒必要,Solr也可以充當NoSQL數據庫。

它甚至可以對某些字段使用壓縮 ,這會影響CPU成本,但會為某種二進制數據節省一些緩存。

看一下BinaryField和schema.xml中的延遲加載字段聲明。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM