代码之家  ›  专栏  ›  技术社区  ›  Chris

如何在solr-php客户机上使用多值字段进行高效的分面搜索?

  •  1
  • Chris  · 技术社区  · 15 年前

    我正在尝试对我的网站进行分面搜索,但遇到了一些问题。

    方面字段设置为动态多值字段。虽然大多数产品对于每个方面字段只有一个值(指定为fq_ux,其中*是要存储的产品属性的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"
    }
    );
    
    1 回复  |  直到 15 年前
        1
  •  0
  •   Osvaldo Mercado    15 年前

    你可能会遇到记忆问题,不是索尔的,而是汤姆猫的。Solr的刻面需要大量的内存,而Tomcat通常的设置是非常低的内存设置,增加Java选项的内存:

    (linux)export java_opts=“-xmx3500m-xms3500米”

    或者其他适当的值,以您处理的信息量和您的服务器可用的信息量为准。

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

    推荐文章