2016-09-30 76 views
1

我有抽屜的一個MySQL表列表命名抽屜一樣如何使用solr中的某些固定位置實現自定義排序順序?

|  BOX  | RANK | 
|----------------|--------| 
|  Box1  | 1 | 
|  Box2  | 2 | 
|  Box3  | 3 | 
|  Box4  | 4 | 
|  Box5  | 5 | 

然後我有說,一些這些框另一個源包含珠寶,應放置在僅一個特定的位置(讓我們把這個表保護盒)。

|  BOX  | RANK | 
|----------------|--------| 
|  Box1  | 4 | 
|  Box3  | 1 | 
|  Box5  | 3 | 

我有一個需要堅持一定的限制:

I cannot write a stored proc on these tables 

我想獲得Solr的箱子應該在哪裏不考慮固定調用順序的保護盒的位置的列表(升序/降序)。例如,

升序排列是:

|  BOX  | RANK | 
|----------------|--------| 
|  Box3  | 1 | 
|  Box2  | 2 | 
|  Box5  | 3 | 
|  Box1  | 4 | 
|  Box4  | 5 | 

降序排列是:

|  BOX  | RANK | 
|----------------|--------| 
|  Box3  | 1 | 
|  Box4  | 2 | 
|  Box5  | 3 | 
|  Box1  | 4 | 
|  Box2  | 5 | 

我進口這些表到Solr的從二氫,目前撕扯我的頭髮除了思考如何去做這個。我有兩個選擇,但都不是很清楚,並希望你們這裏的人幫助我。我的選擇是:

  1. 以這樣的方式寫一個查詢,可以給我正確的順序。 (這將需要一個大師級別的查詢能力,因爲我們只有在二氫選擇查詢)
  2. 寫CustomFieldComparator如下面的鏈接描述:http://sujitpal.blogspot.in/2011/05/custom-sorting-in-solr-using-external.html

是否有任何可以遵循的第三種方法獲得理想的結果?

UPDATE:

我可以毫不降序排列標準工作,但我仍然需要一個上升。

感謝:-)

回答

0

我會創造在您熟悉語言的自定義索引(見https://wiki.apache.org/solr/IntegratingSolr - 我在Python工作和使用mysolr)當您需要更多像這樣的靈活性。也許創造兩個領域,一個爲「上升」,一個爲「下降」;用等級列出一個列表,然後查詢第二個源用於兩個列表上的覆蓋 - 或者任何你需要做的處理數據。我想可行性還取決於你需要索引多少條記錄。然後處理每條記錄,從列表中添加兩個排名字段的信息,並將其分批發送到您的Solr服務器。