2017-08-07 58 views
0

我使用Solr對具有大約100,000個產品和300,000個用戶的系統進行索引和搜索。指數領域是「價格」。但是對於每個用戶來說,價格可能不同。例如:
- 對於產品1和用戶1,用戶2。
- User1看到Product1的價格100 $。
- 但User2不能看到價格(User2必須滿足一些條件才能看到價格),儘管User2在搜索時仍會看到Product1。
Solr一個字段根據某些條件具有不同的值

在編制索引時,我們無法確定是否爲特定用戶設置價格。該產品有一個稱爲「所需合同」的標誌。當用戶登錄時,我們將檢查用戶是否已經爲該產品應用「合同」來顯示或隱藏價格。
這個問題的直接解決方案是爲每個用戶創建不同的「價格」字段。因此,在編制索引時,我們遍歷用戶列表併爲該用戶的「價格」字段編制索引。在搜索時,我們爲登錄用戶使用正確的「價格」字段。顯然,這不是一個實際的解決方案。

我的問題是如何索引「價格」字段在這種情況下還是有解決方案上的任何其他方法?

回答

0

您似乎沒有爲每個用戶提供具體的價格,而是針對用戶組。據推測,數量不是很多的獨特羣體。如果是這樣,一個簡單的解決方案是有多個價格字段(price_group_1price_group_2,...),每個用戶組一個,並讓您的顯示代碼顯示與用戶組匹配的顯示代碼。

+0

感謝@Toke爲您解答。但是,我的問題的挑戰是,條件是由搜索時間(通過組合某些產品屬性和用戶的時間)而不是索引確定的。所以在這種情況下,羣體似乎沒有幫助。 – Kien

+0

@Kien請擴展您的問題,並提供相關詳細信息,告訴您如何確定哪些價格與您的價格相關,否則將不可能提供解決方案,以便您如何以體面的方式對其進行索引。 – MatsLindh

+0

@MatsLindh我已更新我的問題以澄清要求。希望有助於清除問題以提出解決方案。謝謝! – Kien

0

研究了一段時間後,我想出了2個解決方案:

1 /第一個是重複的,需要的條件的文件。重複的文件不包含任何價格(或分配給它的任何值)。因爲需要條件的文件數量不是太多,所以重複不會浪費資源。因此,當進行搜索時,通過組合其他一些標誌,結果是重複的文檔不是滿足我要求的原始文檔。其他方法是使用Function Queries。通過在Google上搜索我的問題,我發現了這一點,因爲我一開始並不知道該功能。

希望能幫助別人的問題!

相關問題