我有一个用户可以选择汽车零件的应用程序.他们选择车辆,然后选择车辆属性作为方面.在选择了他们的车辆后,他们可以选择像发动机尺寸这样的方面,例如,缩小结果列表.问题是,并非所有文档都有引擎大小(在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) 有没有办法在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.
我正在尝试使用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) 我通过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)