小编Dan*_*Dan的帖子

如何在Solr中同时搜索多值facet字段中的空白面?

我有一个用户可以选择汽车零件的应用程序.他们选择车辆,然后选择车辆属性作为方面.在选择了他们的车辆后,他们可以选择像发动机尺寸这样的方面,例如,缩小结果列表.问题是,并非所有文档都有引擎大小(在Solr中它是一个空值),因为它对所有部分都无关紧要.例如,发动机尺寸对于空气过滤器很少很重要.因此,即使用户选择了3.5L的发动机尺寸,我仍然希望在屏幕上显示空气过滤器作为用户可以选择的部分.我做了一些搜索,以下的facet查询完美地运行:

enginesize:"3.5" OR enginesize:(*:* AND -enginesize:[* TO *]) 
Run Code Online (Sandbox Code Playgroud)

此查询将匹配3.5或匹配记录,其中没有引擎大小字段的值(没有值意味着它无关紧要,它适合汽车).完善...

问题:我最近制作了车辆属性字段的多值字段,因此我可以将每个部分的属性存储为列表.然后我将切面应用于它,它工作正常.但是,当我应用上面提到的查询时出现了问题.虽然选择engineize facet缩小了显示的文档数量,但只显示了具有该引擎大小的文档,但是没有出现具有空值(即"")的记录(我也使用单词记录表示文档).上面的相同查询对于多值facet不起作用,就像engineize是单值字段时一样.

例:

 <doc> 
  <str name="part">engine mount</str>
  <arr name="enginesize">
   <str/>
   <str/>
   <str>3.5</str>
   <str>3.5</str>
   <str>3.5</str>
   <str>3.5</str>
   <str>3.5</str>
  </arr>
 <doc>

<doc> 
  <str name="part">engine bolt</str>
  <arr name="enginesize">
   <str>6</str>
   <str>6</str>
   <str>6</str>
   <str>6</str>
   <str>6</str>
  </arr>
 <doc>

 <doc> 
  <str name="part">air filter</str>
  <arr name="enginesize">
   <str/>
   <str/>
   <str></str>
   <str></str>
   <str></str>
   <str></str>
   <str></str>
  </arr>
 <doc>
Run Code Online (Sandbox Code Playgroud)

我正在寻找的是一个查询,当我对3.5的引擎大小进行方面搜索时,将回退上面的文档1和3.第一个文档(引擎挂载)匹配,因为它包含我正在寻找的多个字段"enginesize"中的值(在其中一个字段中包含3.5).但是,由于空<str>值,空气过滤器的第三个文档不会返回.我根本不想返回第二个文档,因为它与构面值不匹配

我基本上想要一个匹配给定facet的空字符串值并且也匹配实际值的查询,所以我得到两个文件都返回.

有人有查询会返回文档1和文档3(引擎支架和空气过滤器),但不会返回引擎螺栓文档吗?

我尝试了以下但没有成功(包括问题最顶端的那个):

// returns everything
enginesize:"3.5"    OR  (enginesize:[* TO *] )
// only returns document 1
enginesize:"3.5"    OR  (enginesize:["" TO …
Run Code Online (Sandbox Code Playgroud)

solr multivalue faceted-search

6
推荐指数
1
解决办法
5000
查看次数

动态配置PHP以获得线程安全--enable-maintainer-zts,还是使用yum来安装pthreads?

有没有办法在PHP中启用线程安全而无需重新编译,或使用YUM执行此操作?

我正在尝试安装pthreads,它需要PHP编译--enable-maintainer-zts.但是,我没有重新编译,因为我想使用yum管理我的PHP堆栈.我目前正在使用REMI回购.我注意到有一个包php-zts,但是,没有一个可用于我的PHP版4.4,我找不到php-zts的源RPM.

有没有办法可以使用yum并在PHP中启用线程安全,所以我可以使用安装pThread

#pecl install channel://pecl.php.net/pthreads-0.0.42

downloading pthreads-0.0.42.tgz ...
Starting to download pthreads-0.0.42.tgz (53,755 bytes)
.............done: 53,755 bytes
33 source files, building
running: phpize
Configuring for:
PHP Api Version:         20100412
Zend Module Api No:      20100525
Zend Extension Api No:   220100525
building in /var/tmp/pear-build-rootkThpG6/pthreads-0.0.42
running: /var/tmp/pthreads/configure

...

checking whether to enable Threading API... yes, shared
checking checking for ZTS... configure: error: pthreads requires ZTS, please re-compile PHP with ZTS enabled
ERROR: `/var/tmp/pthreads/configure' failed
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,它失败了,因为PHP没有启用ZTS.

php multithreading compilation yum

6
推荐指数
1
解决办法
1万
查看次数

如何在路由INI文件中为Zend Framework中的子域编写路由链?

我正在尝试使用Zend路由器创建子域,然后为子域下的每个部分创建子域,例如subdomain.site.com/section/我正在创建另一个路由,然后尝试将其链接到子域路由.但我不知道怎么做.我已经阅读了所有可以找到的文档和所有论坛,但它让我自己弄清楚了.到目前为止,我的尝试只是给我这个错误:

可捕获的致命错误:传递给Zend_Controller_Router_Rewrite :: addRoute()的参数2必须实现接口Zend_Controller_Router_Route_Interface,null给定,在第155行的/var/local/zend/library/Zend/Controller/Router/Rewrite.php中调用,并在/ var中定义第93行/local/zend/library/Zend/Controller/Router/Rewrite.php

使用以下代码:

routes.b2b.type = "Zend_Controller_Router_Route_Hostname"
routes.b2b.route = "sales.sitename.com"
routes.b2b.defaults.module = b2b
routes.b2b.defaults.controller = index
routes.b2b.defaults.action = index

routes.b2b_signup.type = "Zend_Controller_Router_Route_Static"
routes.b2b_signup.route = "/signup"
routes.b2b_signup.defaults.controller = "index"
routes.b2b_signup.defaults.action   = "signup"

routes.b2b_login.type = "Zend_Controller_Router_Route_Chain"
routes.b2b_login.chain = b2b_signup
Run Code Online (Sandbox Code Playgroud)

我找不到一个如何用网上任何地方的INI文件链接这个的例子.整个应用程序用INI编写,用于路由配置,因此我无法将其切换到基于数组的配置(或XML),其中100%的互联网示例都在其中.

如果我能以阵列形式完成,我可以这样说:

$hostnameRoute = new Zend_Controller_Router_Route_Hostname(
    'sales.sitename.com',
    array(
        'controller' => 'index',
        'module'     => 'b2b',
        'action'     => 'index'
    )
);

$hostnameRoute = new Zend_Controller_Router_Route_Static(
    '/signup',
    array(
        'controller' => 'index',
        'module'     => 'b2b',
        'action'     => 'signup'
    )
);
    $chainedRoute = new Zend_Controller_Router_Route_Chain();
    $chainedRoute->chain($b2b_signup) …
Run Code Online (Sandbox Code Playgroud)

php subdomain ini routing zend-framework

5
推荐指数
1
解决办法
6774
查看次数

Jquery追加<select>不能在IE7中运行,但可以在firefox中运行

我通过AJAX从数据库获取数据并将标记附加到select语句.以下代码适用于Firefox,但仅部分在IE中.IE中的问题是在下拉列表中创建选项元素,但"text"属性值为空(下拉列表显示有30个空白行!但是,"value"属性值设置正确(这是主键)我的数据库中是否有一个不同的字段需要在IE中设置而不是"文本"?下面的代码中的粗体文字是我认为问题所在.BTW,值不是空的,我试过放入一个字符串文字,它在IE中仍然是空白的.

代码是:

$.each(data, function(key,value){
    $("<option>").attr("value", key).attr("text",value).appendTo("#select1");
});
Run Code Online (Sandbox Code Playgroud)

firefox jquery append internet-explorer-7 drop-down-menu

2
推荐指数
1
解决办法
1万
查看次数