我工作在一個項目實施的Solr而現在我被困在一個特定的搜索包括ARR場使用多值字段。問題是:在地圖功能
我想搜索的子標識的對象上,這些子ID是存儲在一個多值字段,如:
<arr name="SubIds">
<int>12272</int>
<int>12304</int>
<int>12306</int>
</arr>
查詢(或查詢的一部分)我想要使用如下: map(SubIds,i,i,1,0)
例如,當我在上面的map函數的'i'空間填充12304時,我會期待我的函數返回1.如果我輸入12345,它應該返回0.事情是,當我運行這個查詢時,它返回0,或「沒有數字12304在這個字段中,我返回0」。
當從我的地圖功能刪除0我可以看到實際的價值退還給我(12304時返回1,當不同的返回值),在這種情況下,這是12306!我已經嘗試了一些不同的多值字段,但結果是一樣的;它看起來像函數檢查多值字段中的最後一個值與我填充的ID相對應。
這是真的嗎?如果是這樣,有沒有辦法查看整個arr,並且只有在整個多值域中不存在該值時才返回0?
** 編輯:這只是一個預感,但它可能是當map()函數看到所有項目都是int類型(例如)時自動命令arr列表。這可能意味着該地圖返回的第一個數字(最高),這將(在我的例子中)是12306,而不是12304 ... *
謝謝!
這是什麼map()函數?誰實施了,以及對SOLR進行了哪些查詢?你正在使用分面來計算SubIds中的值? 你能分享這個地圖功能嗎? – Dorin
這是標準的地圖功能,可以用來查詢...有關地圖()的更多信息,請查看官方網站:http://wiki.apache.org/solr/FunctionQuery#map – tkamphuis
對SOLR的完整查詢是如下所示: ?q = {!func} map(SubIds,12304,12304,1,0)&fl = *,score&sort = score%20desc 這是什麼意思,說我用faceting來計數SubIds?有沒有辦法對SubIds arr中的不同值進行求和?這將節省我的一天... – tkamphuis