2014-02-08 87 views
0

我在solr集合中有幾個文檔,我希望能夠搜索。大部分數據來自我可以輕鬆抓取的網站,但是,我需要手動添加一些屬性,因爲我必須手動添加這些屬性。可以使用手動定義的元數據擴展Solr中的數據嗎?

因此,作爲一個例子,我得到一個網站的以下信息(所有屬性從抓取站點返回):

Name: Porsche Boxter 
Year: 1996 
... 

我想通過一個Web界面來添加額外的字段(信息不存在上抓取網站) :

Cool: yes 
foo: bar 

我的問題:

  1. 是否有意義的所有這些都是爲了將​​附加信息存儲在Solr中的索引數據中(文檔內部),還是最佳做法只有在Solr中抓取所有數據並在查詢期間與外部託管數據庫合併?對於我來說,讓我的所有數據最終在Solr中查詢是很有意義的,因爲一些手動添加的屬性是必需的搜索條件(例如,僅查看90年代的酷車)。

  2. 是否可以使用Solr來存儲有關索引文檔的附加信息?我事先知道整個架構,或許這很有用?

  3. 如果我將數據專門存儲在Solr中,如何確保在下次抓取過程中手動添加的數據不會被覆蓋?是否需要部分更新?

由於我是Solr的新手,如果有人可以在描述我的用例的文檔中簡單地管理要查找的內容,這也會非常有幫助。

回答

1
  1. 這取決於外部數據更改的頻率。越經常,意義越小。通常,將這些數據存儲在索引數據中是一個不錯的主意,因爲您無需額外的數據庫查詢即可獲得這些數據。

  2. 是的。使用indexed:falsestored:true。如果您事先不知道所有此類字段,則可以使用dynamicField,如<dynamicField name="*_stored" type="string" indexed="false" stored="true" />

  3. 是的。你必須使用partial update。這對你的情況沒有任何問題,因爲沒有更新的字段有stored:true

+0

謝謝,這聽起來確實很有幫助。 – Stephan

相關問題