2014-01-11 103 views
0

我正在使用rsolr gem將Solr搜索與我的RoR應用程序集成。現在對於每個搜索,我需要指定rows參數,這是我想要檢索的結果數量。爲了檢索對應於查詢的所有結果,我將rows參數設置爲一個較高的值,如in this post所述。Solr:如何獲得對應於查詢的所有結果

但這樣做,使處理真的很慢,我收到以下錯誤的軌道日誌:

[2014-01-11 15:51:08] ERROR WEBrick::HTTPStatus::RequestURITooLarge 
[2014-01-11 15:51:08] ERROR TypeError: can't convert nil into an exact number 
    /home/nish/.rvm/gems/[email protected]/gems/activesupport-3.1.10/lib/active_support/core_ext/time/calculations.rb:266:in `-' 
    /home/nish/.rvm/gems/[email protected]/gems/activesupport-3.1.10/lib/active_support/core_ext/time/calculations.rb:266:in `minus_with_duration' 
    /home/nish/.rvm/gems/[email protected]/gems/activesupport-3.1.10/lib/active_support/core_ext/time/calculations.rb:277:in `minus_with_coercion' 
    /home/nish/.rvm/rubies/ruby-1.9.2-p320/lib/ruby/1.9.1/webrick/accesslog.rb:42:in `setup_params' 
    /home/nish/.rvm/rubies/ruby-1.9.2-p320/lib/ruby/1.9.1/webrick/httpserver.rb:164:in `access_log' 
    /home/nish/.rvm/rubies/ruby-1.9.2-p320/lib/ruby/1.9.1/webrick/httpserver.rb:87:in `run' 
    /home/nish/.rvm/rubies/ruby-1.9.2-p320/lib/ruby/1.9.1/webrick/server.rb:183:in `block in start_thread' 

我怎樣才能解決這個問題?由於

回答

0

Solr FAQ

這是在大多數情況下是不切實際的。人們通常只想做 這是因爲他們知道他們正在處理的索引的大小爲 保證結果集總是會足夠小,以至於他們可以將 以可管理的數量進行傳輸 - 但如果這就是 這種情況請指定您認爲「可管理的金額」,因爲您的行參數爲 ,並獲得兩全其美(當您的假設爲正確時,所有結果都爲 ,如果結果大小爲 ,則假設錯誤)

0

您的錯誤與RoR有關,而不是Solr。它告訴你這個問題 - 請求的URI太大。 WEBrick不是生產口徑的Web服務器,並且v1.9.3似乎將http請求長度限制爲2083(根據此other SO question。)

短期修復?使用不限制您請求的URI長度的網絡服務器,使其短到如此短的時間。

但是,這只是修復程序的一部分 - 從執行時間和結果數量的角度來看,您參與的過程將以線性或更差的方式增長。結果數量不僅會影響性能,還會影響正在檢索的文檔的大小。

你可以分享你的需求,導致一個實現,每個查詢返回所有結果嗎?

相關問題