2013-03-18 53 views
1

我對Solr比較新,需要幫助來決定它是否是我的任務的正確工具(如果是,應該如何使用它)。Solr是否可以(或明智)用於預訂系統?

我有一個用例,其中有一些實體具有多種資源類型,並且用戶需要找到具有足夠可用資源的實體。爲了讓它不那麼抽象,可以說有幾家汽車租賃公司,以及幾種汽車類型(SUV,微型客車,卡車......);我們追蹤每個公司/車型/每日組合的可用車輛數量。用戶想要租用一定數量的汽車,並且我們需要找出哪些公司可以滿足這一要求。

還有其他方面的搜索,爲此Solr似乎是一個很好的匹配(每個實體都有一些屬性,認爲公司的位置,價格,是否存在綠色租賃政策等,以及那些需要搜索,範圍過濾器和分面搜索,並根據用戶反饋評分進行排序),所以如果資源分配方面可能被鎖定到Solr中,那將會很不錯。那可能嗎?出於某種原因,這是一個壞主意嗎?你能否推薦一款更適合這項任務的工具?


瀏覽Solr的文檔後,我想出了這個方案:

  • 該公司的文件
  • 每一天/車式組合持有的數量動態場給定類型的免費汽車,在該公司的給定日期
  • 條件將是一個巨大的布爾表達式,由術語組成,如field_<car_type>_<day>:[<required_number> TO *]

我不確定它有以下幾個原因:

  • 它需要成千上萬的領域 - 這可能會導致性能問題?
  • 據我所知,Solr將範圍查詢拆分爲多個相等檢查或一起進行編輯,因此查詢最終會產生數千個術語 - 這又可能導致性能問題?
  • 每次用戶進行預訂時,字段值都會發生變化 - 據我所知,這會強制重新索引,這很慢,與上述問題相同。

我希望如何處理這個問題(例如,一些其他搜索工具來使用,或如何Solr的可能與做了預約檢查一些自定義代碼交互)的任何指針。

+0

難道你不能在大部分工作中使用良好的舊SQL,並且對Solr索引進行了微調以進行搜索,可以將字段合併在一起,等等。您應該能夠使用http://docs.lucidworks從SQL導入數據。com/display/solr /上傳+ Structured + Data + Store + Data + with + the + Data + Import + Handler – rcomblen 2013-03-18 09:51:09

+0

@rcomblen我可以使用SQL來檢查可用性,但我寧願不對每個搜索請求運行復雜的SQL查詢。我沒有看到的是如何將其與Solr集成。我需要運行SQL查詢來獲取具有足夠資源的公司列表,然後將該列表提供給Solr(我不知道如何執行此操作),或先運行Solr搜索,然後篩選出不可用使用SQL的汽車(這會攪亂Solr數據,如分頁和麪數)。乍一看,您的鏈接似乎是從SQL導入文檔,而不是導入每個查詢過濾器的結果。 – Tgr 2013-03-18 10:49:49

+0

一個類似的問題:[SOLR旅遊網站:日期查詢](http://stackoverflow.com/questions/9118177/solr-travel-site-on-date-queries) – Tgr 2013-03-19 15:30:01

回答

2

您的問題似乎與酒店業和購物業面臨的問題類似。您可能會發現the presentation from Gilt有幫助。

基本情緒似乎是,您可能需要重新定義您的文檔是比您的原始想法更細粒度的東西。在你的情況下,這可能索引可用性作爲Solr 文檔,其中附加信息要麼爲每個可用性插槽複製,要麼使用Solr join運算符。

+0

謝謝!這些幻燈片非常有趣,並且使用每個公司/日/類型三元組作爲文檔似乎是一個好主意。我沒有得到有關Gilt展示的內容,但它們是如何考慮可用性的。幻燈片只是說他們有一個自定義過濾器(我假設這意味着一個用Java編寫的Solr插件),它與庫存服務聯繫。這是否意味着對搜索的每個結果調用外部服務? (示例代碼似乎暗示了這一點)。這聽起來非常昂貴。 – Tgr 2013-03-19 15:10:33

+0

連接運算符也很有趣,但如果我理解正確,它意味着您可以過濾共享數據(這是公司的一個字段,而不是公司/類型/日),但您只能獲取子數據(例如,您可以在位於芝加哥的公司展示可用汽車的結果列表,但無法顯示該公司所在的每個結果項目)。這不會影響整個事情嗎? – Tgr 2013-03-19 15:14:47

+0

加入運營商是一個早期階段的事情,可能並不完美。有一些關於父母/孩子索引的工作。請檢查solr用戶郵件列表以進行多重討論。 如果做得對,自定義過濾器不必非常昂貴。您可以緩存一小段時間,配置服務等。Solr爲您提供生命週期掛鉤,可能有所幫助。此外,您可能能夠通過針對該演示文稿的非常具體的問題聯繫Gilt人員。不知何故,它適用於他們(流量非常高),所以一定有辦法。 – 2013-03-19 16:56:23