如何通过Drupal 7站点中的搜索URL或解决术语方面



我有一个运行apachesolr搜索的Drupal 7网站,并通过facetapi模块使用faceting。

当我使用分面来缩小搜索范围时,一切都运行良好,我可以看到过滤器被添加到搜索 URL 中,因此我可以将它们作为链接(现成的缩小搜索(复制到网站上的其他地方。

以下是我选择多个分面/过滤器后 apachesolr URL 的外观示例:

search_url/search_keyword?f[0]=im_field_tag_term1%3A1&f[1]=im_field_tag_term2%3A100

其中">search_keyword"部分是我正在搜索的文本,">%3A"只是编码的 url:"(冒号(。

知道这种格式,我可以通过为 URL 创建正确的格式来创建任意数量的现成搜索。 完善!

但是,这些筛选器始终是 AND 的,与使用分面接口时的方式相同。 有谁知道我是否可以使用语法,特别是在搜索 URL 中,我的过滤器/方面? 意思是,使结果是包含两个过滤器之一的所有条目?

提前感谢您的任何帮助或正确方向的指示!

新编辑:

我确实知道如何通过 URL 或相同词汇表中的术语,我只是想知道如何为不同词汇表中的术语执行此操作。 ;-)

可以编写如下所示的筛选器查询:

fq=field1:value1 OR field2:value2

或者,您可以使用本地参数来指定查询运算符:

fq={!q.op=OR}field1:value1 field2:value2

据我所知,没有任何更简单的方法可以做到这一点。事实上,有一个相当古老的错误要求一种OR fq参数的方法......

我终于在Drupal中找到了一种方法来做到这一点

启用 fq 参数设置。

  • 转到admin/config/search/apachesolr/[your_search_page]/core_search/edit,或者直接导航到您尝试修改的搜索页面的设置

  • 检查"允许用户使用 URL 输入内容"设置

网址语法

  • 在 URL 末尾添加以下内容:?fq=tid:(16 或 38(,其中 16 和 38 是术语 ID

相关内容

最新更新