2016-11-15 96 views
0

我使用SOLR 6.2.1,與多值領域的核心:升壓SOLR相關的匹配的位置多值字段

<field name="tag_ids" type="ints" required="false" indexed="true" stored="true"/> 

它允許通過搜索標籤ID文件,具有查詢例如tag_ids:12。我在這個領域有標籤,按照文檔的標籤相關性排序。我想按文檔標籤相關性排序。

示例 - 搜索查詢tag_ids:12,文件:

[ 
{ 
    id: 1, 
    tag_ids:[1298,43,12,89] 
}, 
{ 
    id: 2, 
    tag_ids:[12,574,1,4356] 
}, 
{ 
    id: 3, 
    tag_ids:[77,12,65] 
} 
] 

希望看到的文檔與順序2,3,1。

問題:是否可以通過匹配位置在Apache SOLR的多值字段中進行排序?可能是一些黑客或插件?

+0

Solr沒有看一個術語的位置。在你的情況下,所有的tag_ids都得到了相同的分數1 – Oyeme

+1

也許你需要編寫你自己的QueryParserPlugin來使用它們作爲你的用例。 – Oyeme

+0

在嘗試做類似的事情時,我注意到SOLR給出了一個任意的「距離」(我忘了多少,大約100)在多值域中的元素之間,以便它們「很遠」但不是太遠。 –

回答

2

您需要做的是在索引時間爲每個標籤添加重量信息,並且您的查詢將按原樣工作。

索引與每個標籤的重量,你有幾種方法:

  1. 嘗試用有效載荷,here是一箇舊版本的Solr的一個完整的例子,here是另一回事。您可能需要修改此樣本,因爲Solr apis從那時起已經更改。
  2. 使用添加N次,每次標籤的黑客知道,在你的例子會看起來像:

    [ { ID:1, tag_ids:[1298,1298,1298,1298,43,43 ,43,12,12,89] },{ ID :2, tag_ids:[12,12,12,12,574,574,1,1,4356] },{ ID :3, tag_ids: [77,77,77,77,12,12,12,65,65] }]

+0

非常感謝,這是我所尋找的。 –

+0

[@Persimmonium](http://stackoverflow.com/users/101762/persimmonium)您是否也可以爲您發佈的兩種可能的解決方案發布示例查詢?提前致謝。 –