- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
使用 Apachesolr 进行搜索,我想在 hook_apachesolr_prepare_query(&$query) 中添加几个过滤器。这工作得很好,除了我希望过滤器扩大搜索范围(“OR”),而不是缩小搜索范围(“AND”)。
例如,如果我有 4 个类型为:A 的节点和 3 个类型为:B 的节点与搜索匹配,则按类型:A 和类型:B 进行过滤应返回 7 个节点(类型为:A 且节点类型为: B),而不是 0 那些类型为:A 且类型为:B 的值。
我看到有人建议使用节点访问模型来做到这一点
foreach ($filters as $filter) {
$subquery = apachesolr_drupal_query();
if (!empty($subquery)) {
$subquery->add_filter('type', $filter);
$query->add_subquery($subquery);
}
}
但这似乎不起作用。 (它不返回任何结果)。
然后我尝试排除我不想要的类型(因为我的节点类型数量有限):
$excludes = array('A', 'B', 'C');
$excludes = array_diff($excludes, $filters);
$exclude = implode('&', $excludes);
$query->add_filter('type', $exclude, TRUE);
这种将它们拼接在一起的方法不起作用(“&”被转义),但将它们添加为子查询也不起作用,与上面的方式类似。
关于如何做到这一点有什么建议吗?
最佳答案
使用 Drupal7 和最后的 apacheSolr API,您可以通过执行以下操作来执行 OR 过滤器:
function my_module_apachesolr_query_alter($query) {
// first, create a subQuery filter to store others
// and specify there is a "OR" condition
$filter = new SolrFilterSubQuery('OR');
// next, add all filters on bundle you want, each as
// a new subQuery filter, always with "OR" condition
// and add it to the primary filter
$a = new SolrFilterSubQuery('OR');
$a->addFilter('bundle', 'A');
$filter->addFilterSubQuery( $a );
$b = new SolrFilterSubQuery('OR');
$b->addFilter('bundle', 'B');
$filter->addFilterSubQuery( $b );
$c = new SolrFilterSubQuery('OR');
$c->addFilter('bundle', 'C');
$filter->addFilterSubQuery( $c );
// finally, add the primary subQuery filter as
// subquery of the current query
$query->addFilterSubQuery( $filter );
}
您的查询搜索有关类型 A 或类型 B 或类型 C(每种类型的所有结果)。您可以通过更改 SolrFilterSubQuery 实例的参数来组合 OR/AND。
特别感谢此页面及其作者:http://fr.ench.info/blog/2012/04/03/Add-Filters-ApacheSOLR.html
关于drupal - 如何使用多个过滤器来扩大 Apachesolr 查询中的搜索范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3558094/
有人可以解释一下为什么您会使用扩大或缩小转换吗?我已经阅读了很多关于这些的内容,但没有人给我一个实际的例子。谢谢! 最佳答案 (Java) 扩大和缩小转换与相关类型之间的转换有关。以抽象(超)类与其(
假设我有一个接口(interface): public interface FooInterface { public void someMethod(); } 我有一个实现这
我正在尝试用 ocaml 编写一个免费的 monad 库,关注 Control.Monad.Free来自haskell,但我在执行hoistFree 时陷入了困境。 hoistFree :: Func
我有这样的数据。每行代表该 ID 在某个日期的一个值。 ID Date Value A 2012-01-05 50 A 2012-01-08 100 A
我正在开发一个可以扩展/收缩的 SwiftUI List 单元,这是一个非常简单的东西,您可以在很多上下文中看到。类似于以下内容(以下内容在 UIKit 中实现): 说实话,我正在努力在 SwiftU
http://jsfiddle.net/bzL7p87k/ 我在这个表中有占位符,他们用特殊的词填充,但是当我有超过 4 行时怎么办?当我有 21 行的 21 个占位符时? 我的意思是:我只有一行与占
我需要在我的 Zoul 项目中使用一个库,它广泛使用 malloc 机制来分配动态内存。 问题是当这个库调用 malloc 时它返回 NULL 因为堆中没有足够的内存。 我试过这个简单的函数来查看程序
使用 bootstrap 4.0.0,我有以下代码: Title text text text Click me ... repeated many t
关闭。这个问题需要更多focused .它目前不接受答案。 想改进这个问题吗? 更新问题,使其只关注一个问题 editing this post . 关闭 8 年前。 Improve this q
我有一个 TextView,我在其中设置了 HTML 文本。这篇文章有很多链接。当您点击一个链接时,它并不总是触发 onClick 方法。因此,我正在尝试扩展 ClickableSpan 的区域,以便
在 WPF 中,当用户将焦点放在 TextBox 中时,我想要一些动画,使 TextBox 变为多行并使其 Width 变大(在他打字时),当失去焦点时,TextBox 恢复到原来的大小。 大小未知。
我想在目录中搜索与任何单词列表匹配的任何文件。如果文件匹配,我想将该文件复制到一个新目录中。我创建了一小批测试文件并使以下代码正常工作: cp `grep -lir 'word\|word2\|wor
我有一个布局,左侧是图像,右侧是文本内容。我希望图像具有 100% 的高度,并且我希望保持图像的纵横比。文本内容应填充可用宽度。 我尝试使用 flex-box,但是图像 flex 元素不会根据图像大小
我使用 JHChainableAnimations增大(缩放) View 设置一个新值,然后再次将 View 缩小(缩放)到其原始大小。 我尝试过: var isGrowing = true
我不确定其他人是否会有这种奇怪的愿望,也就是说我意识到这可能是一个不寻常的请求。 我想采用顶部示例中的内容,并让它在除数“:”字符上自动变为“居中对齐”。 这是 Xcode 扩展程序可以编写的程序吗?
我正在为网站创建一个简单的 2 列布局,但遇到了一些问题。当我向应用了 float:left 的列添加填充时, float 会扩展超过我定义的宽度。我似乎无法在任何地方找到这个问题的答案。 最佳答案
我得到了一个组织为 的图片库.所有图像都在 元素,当我将鼠标移到其中一张图片上时,它应该会增长以向用户提供视觉反馈。问题是,当我只是使用 animate() 更改图像的大小时,其他图片将被推到一边,
我正在尝试放大最居中的 ListView 项目。 (最终,我希望将其扩展为一种简单轻巧的3D效果,元素在屏幕中间时会放大,在下方时会缩小,全黑背景和文本项放大和缩小……) 所以,我制作了一个虚拟 Li
我有一个 canvas,我希望它是 100% 屏幕宽度和至少 100% 屏幕高度,但如果以下 div 超出底部屏幕。 我正在使用 Trianglify 填充 Canvas 。 var patt
我很难以我很容易理解的方式找到关于这个主题的信息,所以我要求对我找到的内容进行审查。这都是关于转换和转换的。 在例子中我将提到: (signed/unsigned) int bigger; (sign
我是一名优秀的程序员,十分优秀!