2010-11-24 78 views
1

我正在嘗試爲我的網站設置多面搜索,但遇到問題。如何使用solr php客戶端使用多值字段進行高效的分面搜索?

構面字段被設置爲動態multiValued字段。雖然大多數產品對每個分面的字段都只有一個值(指定爲fq_ *,其中*是要存儲的產品屬性的屬性ID),但有些值具有多個值。

分面搜索工作得很好 - 直到我嘗試訪問我們產品的一個類別,其中一個或多個產品在一個分面屬性上具有多個值時。對於這個類別(和其他類似的),我從php solr客戶端得到一個錯誤:「500」狀態:內部服務器錯誤。

搜索了一段時間後,我發現設置facet.method等於「enum」,它解決了錯誤 - 但是這增加了大量加載頁面所花費的時間。

有沒有什麼辦法可以更有效地進行這樣的多面搜索? (我可以處理它比「fc」方法稍長一點,但不是太多)。

謝謝。

編輯(這裏的參數):

$solr->search('categoryid:4810', 0, 15, array(8) { 
    ["sort"]=> 
    string(17) "price_Default asc" 
    ["facet"]=> 
    string(4) "true" 
    ["facet.field"]=> 
    array(12) { 
    [0]=> 
    string(7) "mfgname" 
    [1]=> 
    string(14) "fq_33111116587" 
    [2]=> 
    string(14) "fq_33111116586" 
    [3]=> 
    string(14) "fq_33111114704" 
    [4]=> 
    string(11) "fq_33113118" 
    [5]=> 
    string(9) "fq_331472" 
    [6]=> 
    string(10) "fq_3312052" 
    [7]=> 
    string(9) "fq_331611" 
    [8]=> 
    string(10) "fq_3312304" 
    [9]=> 
    string(14) "fq_33111116919" 
    [10]=> 
    string(9) "fq_331100" 
    [11]=> 
    string(9) "fq_331710" 
    } 
    ["facet.sort"]=> 
    string(5) "false" 
    ["facet.mincount"]=> 
    int(1) 
    ["facet.missing"]=> 
    string(5) "false" 
    ["facet.limit"]=> 
    int(-1) 
    ["facet.method"]=> 
    string(4) "enum" 
} 
); 
+0

你能後的實際參數(所有的)爲您的查詢? – netcoder 2010-11-24 20:32:11

回答

0

你可能遇到了不Solr的內存問題,但是Tomcat的的... Solr的小面需要大量的內存和Tomcat的常用設置帶有一個非常低的內存設置,提高您的JAVA_OPTS的記憶:

(Linux)的出口JAVA_OPTS =「 - Xmx3500m -Xms3500m」

或其他一些合適的值,你處理信息的數量和你的服務器有提供。

以下是這方面的一些好的資源: http://wiki.apache.org/tomcat/FAQ/Memory http://helpdeskgeek.com/how-to/increase-tomcat-memory-allocation/

相關問題