1个

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

当我使用分面来缩小搜索范围时,一切正常,我可以看到过滤器被添加到搜索 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 创建正确的格式来创建任意数量的现成搜索。完美的!

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

在此先感谢您提供正确方向的任何帮助或指示!

新编辑:

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

获取问题和答案的更新

2 个回答

1个

您可以编写如下所示的过滤器查询:

fq=field1:value1 OR field2:value2

或者,您可以使用 localparams 指定查询运算符:

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

据我所知,没有比这更简单的方法了。事实上,有一个相当古老的错误要求获取OR参数的方法fq......

1个

我终于在 Drupal 中找到了执行此操作的方法

启用 fq 参数设置。 正确答案

  • 转到 admin/config/search/apachesolr/[your_search_page]/core_search/edit 或只是导航到您要修改的搜索页面的设置

  • 检查“允许用户使用 URL 输入”设置

网址语法

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

来自  https://stackoverflow.com/questions/10522990/how-to-or-solr-term-facets-via-the-search-url-in-drupal-7-site