2011-04-21 18 views
0

我正在使用ColdFusion 9.0.1和集成的SOLR全文搜索引擎。如何按日期範圍檢索結果並使用SOLR與ColdFusion 9.0.1進行排序?

我有日期存儲在我的SQL Server數據庫作爲即將到來的事件的日期時間字段。我將這些記錄插入到SOLR集合中,custom3和custom4分別是dateStart和dateEnd日期。用戶希望查詢日期範圍內的集合,並按照最近的日期進行排序。

第一個問題:我們如何設置custom1-4字段的數據類型?或者,我們可以嗎?根據這篇文章Optimizing Solr for Sorting,爲了獲得最佳性能,該字段應設置爲日期或日期而不是字符串。或者,SOLR會根據這篇文章Sort by date in Solr/Lucene performance problems自動讓該字段具有正確的數據類型?

第二個問題:如何構建搜索條件來提取記錄?例如,2011年5月1日到2011年7月31日之間如何?

回答

1

我也不知道很多人這個,但是對於你,我相信現在是時候把CFINDEX/CFSEARCH丟掉,並且直接開始使用Solr。

CF的實現是爲索引具有某些屬性的大塊文本構建的,而不是查詢。如果您直接開始使用Solr,則可以創建自己的模式,並對搜索的工作方式進行更細緻的控制。是的,實施需要更長時間,但您會喜歡結果。按日期過濾僅僅是個開始。

這裏有步驟的快速概述:

  1. 創建一個使用CFAdmin的新指標。這是創建所有需要的文件的簡單方法。
  2. 修改模式。該架構位於[cfroot]/solr/multicore/[您的索引名稱]/conf
  3. 架構的上半部分是<types>。這定義了您可以使用的所有數據類型。下半部分是<fields>,這就是你要做大部分改變的地方。這很簡單,就像一張桌子一樣。爲要包含的每個「列」創建一個字段。 「索引」意味着你想讓該字段可搜索。 「存儲」意味着您需要存儲確切的數據,以便您可以使用它來顯示結果。因爲我使用的是CF9的ORM,所以我不會在主鍵之外存儲太多內容,並且在結果頁上使用loadEntityByPK()。
  4. 修改架構後,您需要重新啓動solr服務/守護進程。
  5. 使用http://cfsolrlib.riaforge.org/爲您的數據編制索引(add方法是'插入或修改'樣式方法),並執行搜索。
  6. 要進行搜索,請查看此示例。它顯示瞭如何按日期排序和過濾。我沒有測試它,所以日期的格式可能是錯誤的,但是你會明白。 http://pastebin.com/eBBYkvCW

很抱歉,這個答案很籠統,所以我希望我可以讓你在這裏要正確的道路:)

+0

謝謝你的偉大的意見,香!我會給你的方法一個鏡頭並回報。看起來像贏家。 – 2011-04-23 13:05:05

+0

當使用CFSolrLib時,我不斷收到「SOLR服務器沒有響應」。顯然,我沒有正確設置SOLR的路徑。在我的本地機器上工作時,我可以拉起http:// localhost:8983/solr並查看當前收藏列表。因此,我有以下設置: – 2011-04-25 18:39:28

+0

- 我使用的是WAMP,所以我的web根目錄在D:\ wamp \ www - ColdFusion位於D:\ ColdFusion9 – 2011-04-25 18:46:34