簡體   English   中英

有沒有更好的方法可以在SOLR的現場級別上表示出處

[英]Is there a better way to represent provenenace on a field level in SOLR

我在SOLR中有一些文檔,這些文檔由多個字段組成,其中的值來自不同的源系統。 之所以這樣做,是因為該文檔正是我想要從SOLR搜索中返回的內容,其中包括諸如點擊突出顯示之類的功能。 據我所知,如果我將join與多個SOLR文檔一起使用,則無法獲得相關文檔中匹配的內容。 我的文檔具有如下字段:

id => unique entity id
type => entity type
name => entity name
field_1_s => dynamic field from system A
field_2_s => dynamic field from system B
...

現在,我的問題是在其中一個源系統中更新數據時。 我只需要更新或刪除與該源系統相對應的字段,並保持其他字段不變。 我的想法是對動態字段名稱進行編碼,其中字段名稱的第一部分是代表源系統的8個字符的哈希。這樣,它們就可以在唯一源哈希之外具有公共字段名稱。 這樣,如果需要,我可以輕松清除所有以源前綴開頭的字段。

這聽起來像我應該做的事情,還是別人嘗試了其他方式?

根據我們的經驗,實現這樣的事情最簡單,最不易出錯的方法是直接生成結果文檔,然后用重新索引時從兩個子系統中檢索到的數據重新索引整個文檔。 跟蹤字段名稱和字段刪除往往會涉及很多業務規則,而這些業務規則通常不在您使用它們的地方。

通過專注於使特定文檔建立索引的任務變得容易和高效,您還將使系統在以后的其他問題上也變得更加靈活(從Solr中檢索具有一定值的所有文檔,然后為這些文檔觸發重新索引)實用腳本等)。

這樣,您的應用程序和主索引代碼也將具有相同的索引流,因此您不必維護多組索引代碼即可執行不同的工作。

如果在獲取所需文檔數量時查詢的系統無法執行,則可以添加本地緩存(以SQL,memcached或類似方式)以加快處理速度,但是該代碼可以特定於索引過程。 通常,子系統將具有足夠的性能(至少如果根據要更新的文檔進行批處理檢索,則至少)。

暫無
暫無

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

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