2009-11-10 110 views
5

好吧,我是完全陌生的SOLR和Lucene,但已經得到了Solr的運行外的開箱Tomcat下6.x和剛剛走了過來一些基本的維基條目。將SOLR用於Web項目的最佳方法是什麼?

我有幾個問題,並要求一些建議了。

  1. Solr可以索引文件(XML,CSV)中的數據,也可以索引數據庫。你也可以只是指向一個URI /域名,並以谷歌的方式索引一個網站?

  2. 如果我有一個網站用「的頁面」的數據,所以「頁面名稱」,「頁面內容」等,以及「產品的數據」,所以「產品名稱」,「SKU」等等,我需要兩個不同Schema.xml文件?如果是這樣,這是否意味着兩個不同的Solr實例?

最後,如果你有一個大的關係和規範化的數據庫的一個項目,你會說什麼是最好的方法從下面?:

  1. 3個選項在運行的中間件服務的背景下,其礦山DB和手動創建相關的XML文件,然後發送給SOLR

  2. 有無SOLR索引數據庫直接。在這種情況下,最好是將SOLR指向視圖,這將抽象所有表關係?

  3. 任何其他的選擇,我不知道的?

語境:我們在Windows 2003環境中運行,.NET 3.5,SQLServer的2005/2008

喝彩!

回答

7
  1. 沒有,你需要的是,例如履帶Nutch
  2. 是的,你想兩個單獨的索引(=兩個schema.xml中),因爲似乎該數據集不被相關。這並不意味着兩個Solr實例,您可以使用Cores來管理這兩個索引。

至於填充Solr索引,它取決於您的特定項目,例如,它可以容忍陳舊的數據,還是它必須絕對新鮮。

索引數據的其他選項包括:如果您正在使用某種ORM的使用其攔截能力

  • 數據庫觸發器
  • 。例如,您可以使用NHibernate事件來更新更新,插入或刪除索引。如果您使用NHibernate和SolrNet這是taken care of automatically
+0

+1感謝Mauricio,這真的很有用。我想知道你是否可以在一點上擴大一點,可能是兩點。就陳舊和新鮮的數據而言,我使用哪些數據源並不重要?只有我多久提交更改......假設所有提交(添加/更新/刪除)都必須手動完成?至於SolrNet,我不需要擔心與SOLR手動通信嗎?再次感謝關於數據新鮮度的 – andy 2009-11-10 02:27:05

+1

:它取決於數據的*用戶*(消費者)。如果消費者需要*總是*查看最新的數據以排除離線/後臺索引方法,並且您必須使用更具響應性的內容,例如觸發器或ORM攔截。 當然,索引網頁時你沒有得到任何「觸發器」,你唯一的選擇就是爬蟲。 是的,SolrNet處理.Net <-> Solr通信。 – 2009-11-10 02:55:42

+0

@mauricio:謝謝你。我們使用自定義CMS來構建我們的網站。那麼,當您在CMS中編輯頁面/產品時,是否認爲只需通過XML提交更新/刪除到Solr就可以做出明智的決定?我們也不使用NHybernate,所以我認爲SolrNet沒有任何好處。再次感謝,這真的很有幫助 – andy 2009-11-10 03:01:28

1

我認爲毛是死在了他的意見。我會做的唯一的一點是,當決定有一個「中間件」索引器,或直接使用數據庫。如果你的數據庫(或視圖?)非常接近Solr模式想要的東西,那麼DIH很棒。但是,如果您是從多個數據源編制索引,或者如果您必須深入瞭解數據庫中的數據以滿足Solr的需求,那麼擁有專用中間件索引器會更好。

+0

而「死」,我的意思是非常準確!以防萬一有人困惑! – 2009-11-10 15:39:44

+0

很酷,謝謝Eric的額外建議。我只是想知道是否有中間件是完全愚蠢的,但我認爲這是有意義的,在一個環境中,如你所說,數據源是多種多樣的。乾杯! +1 – andy 2009-11-10 21:56:49

相關問題