2014-05-09 23 views
2

我遇到了一些使用Solr 3.6.2開發自定義函數查詢的問題。 我的目標是能夠實施自定義排序技術。Solr按自定義函數查詢排序

我有一個名爲daily_prices_str的字段,它是一個單獨的值str。

例子:

<str name="daily_prices_str"> 
2014-05-01:130 2014-05-02:130 2014-05-03:130 2014-05-04:130 2014-05-05:130 2014-05-06:130 2014-05-07:130 2014-05-08:130 2014-05-09:130 2014-05-10:130 2014-05-11:130 2014-05-12:130 2014-05-13:130 2014-05-14:130 2014-05-15:130 2014-05-16:130 2014-05-17:130 2014-05-18:130 2014-05-19:130 2014-05-20:130 2014-05-21:130 2014-05-22:130 2014-05-23:130 2014-05-24:130 2014-05-25:130 2014-05-26:130 2014-05-27:130 2014-05-28:130 2014-05-29:130 2014-05-30:130 2014-05-31:130 2014-06-01:130 2014-06-02:130 2014-06-03:130 2014-06-04:130 2014-06-05:130 2014-06-06:130 2014-06-07:130 2014-06-08:130 2014-06-09:130 2014-06-10:130 2014-06-11:130 2014-06-12:130 2014-06-13:130 2014-06-14:130 2014-06-15:130 2014-06-16:130 2014-06-17:130 2014-06-18:130 2014-06-19:130 2014-06-20:130 2014-06-21:130 2014-06-22:130 2014-06-23:130 2014-06-24:130 2014-06-25:130 2014-06-26:130 2014-06-27:130 2014-06-28:130 2014-06-29:130 2014-06-30:130 2014-07-01:130 2014-07-02:130 2014-07-03:130 2014-07-04:130 2014-07-05:130 2014-07-06:130 2014-07-07:130 2014-07-08:130 2014-07-09:130 2014-07-10:130 2014-07-11:130 2014-07-12:130 2014-07-13:130 2014-07-14:130 2014-07-15:130 2014-07-16:130 2014-07-17:130 2014-07-18:130 2014-07-19:170 2014-07-20:170 2014-07-21:170 2014-07-22:170 2014-07-23:170 2014-07-24:170 2014-07-25:170 2014-07-26:170 2014-07-27:170 2014-07-28:170 2014-07-29:170 2014-07-30:170 2014-07-31:170 2014-08-01:170 2014-08-02:170 2014-08-03:170 2014-08-04:170 2014-08-05:170 2014-08-06:170 2014-08-07:170 2014-08-08:170 2014-08-09:170 2014-08-10:170 2014-08-11:170 2014-08-12:170 2014-08-13:170 2014-08-14:170 2014-08-15:170 2014-08-16:170 2014-08-17:170 2014-08-18:170 2014-08-19:170 2014-08-20:170 2014-08-21:170 2014-08-22:170 2014-08-23:170 2014-08-24:170 2014-08-25:170 2014-08-26:170 2014-08-27:170 2014-08-28:170 2014-08-29:170 2014-08-30:170 
</str> 

正如你所看到的字符串結構日期:價格。

基本上,我想解析字符串來獲得特定時期的價格並按該價格排序。 我已經開發了用於自定義函數查詢的java插件,並且我處於代碼編譯,運行,執行等階段。Solr很滿意我的代碼。

例子:

price(daily_prices_str,2015-01-01,2015-01-03) 

如果我運行此查詢我可以看到正確的價格在得分字段:

/select?price=price(daily_prices_str,2015-01-01,2015-01-03)&q={!func}$price 

其中的一個問題是,我不能排序功能的結果。 如果我運行此查詢:

/select?price=price(daily_prices_str,2015-01-01,2015-01-03)&q={!func}$price&sort=$price+asc 

我收到了404說,「排序PARAM不能被解析爲一個查詢,並不存在於索引的字段:$價格」 但

/select?price=sum(0,price(daily_prices_str,2015-01-01,2015-01-03))&q={!func}$price&sort=$price+asc 

的主要問題是,我無法用範圍篩選:

/select?price=sum(0,price(daily_prices_str,2015-1-1,2015-1-3))&q={!frange l=100 u=400}$price 

有變通辦法也許我完全錯誤地回答這個問題?

回答

0

而不是將新創建的「價格」傳遞給「排序」參數,你可以像數據一樣傳遞函數嗎?

q=*:*&sort=price(daily_prices_str,2015-01-01,2015-01-03) ... 
+0

我已經試過了,它沒有工作,我發現沒有得到任何錯誤的唯一方法是「包裝」我的功能內sum函數。 – Tatekan