2013-08-07 11 views
0

我有一個使用SOLR作爲後端搜索服務的Web應用程序。在SOLR中覆蓋不需要的頁面大小

控制搜索的所有請求都是GET請求:用戶執行某些操作(鍵入內容,選擇頁面大小,排序標準),並在按下搜索按鈕後,Web應用程序上相應的servlet調用SOLR。

現在,發送到我的servlet的參數會暴露在瀏覽器地址欄中;這是好事,因爲

1)上的web應用程序的每一頁可被存儲爲永久
2)的搜索可以通過直接改變URL

最重要的是進行控制,對於特定的參數,該頁面大小,我想強加一些限制。我的意思是:如果網絡應用上的選擇菜單提出了3個選擇(5,10,15),我不想要其他值。

現在,我知道我可以在我的servlet中做到這一點,但我想知道在SOLR方面是否可行......本地參數?不知道。

簡而言之:SOLR上的「rows」參數必須是5,10或20:如果值> 20,則應用20。

回答

1

在Solr SearchHandlers中,您可以預定義一些配置設置,如Configuration部分中所述。這可以讓你設置以下參數行爲

  • 默認 - 如果提供帕拉姆沒有在請求時指定的值將用於默認PARAM值。
  • 追加 - 提供將除了在請求時(或作爲默認值指定的任何值一起使用PARAM值
  • 不變量 - 提供將在儘管任何值可以使用在請求中提供PARAM值這是一種讓Solr維護者鎖定Solr客戶端可用選項的方法,無論查詢,「默認」或「附加」參數中指定了什麼值,都使用此處指定的任何參數值。

但是,這些三個選項,不提供將行值限制爲20的特定行爲,就像您正在尋找的那樣。我相信在Solr中限制這一點的唯一方法是創建一個自定義請求處理程序並將其插入Solr。文章 - Developing a Request Handler for Solr提供了創建您自己的請求處理程序所需步驟的完整概述。