簡體   English   中英

如何使用Solr PHP客戶端使用多值字段進行有效的多面搜索?

[英]How do I do an efficient faceted search using multi-valued fields with solr php client?

我正在嘗試為我的網站設置多面搜索,但是遇到了問題。

構面字段設置為動態多值字段。 盡管大多數產品的每個多面字段只有一個值(指定為fq_ *,其中*是要存儲的產品屬性的attributeid),但有些產品具有多個值。

多面搜索的效果很好-不錯,而且非常快捷,直到我嘗試訪問一個產品類別時,其中一個或多個產品的多面屬性具有多個值。 對於此類別(以及其他類似類別),我從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"
}
);

您可能遇到的不是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/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM