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 创建正确格式来创建任意数量的现成搜索。完美的!

但是,这些过滤器始终是 AND 运算,与使用 facet 接口时的方式相同。有谁知道我是否可以使用某种语法(特别是在搜索 URL 中)来OR我的过滤器/构面?意思是,使其结果是包含两个过滤器中的任何一个的所有条目?

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

新编辑:

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

4

2 回答 2

1

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

fq=field1:value1 OR field2:value2

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

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

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

于 2012-05-10T17:36:35.313 回答
1

I finally found a way to do this in Drupal

Enable the fq parameter setting.

  • Go to admin/config/search/apachesolr/[your_search_page]/core_search/edit or just navigate to the settings of the search page you're trying to modify

  • Check the 'Allow user input using the URL' setting

URL Syntax

  • Add the following at the end of the URL: ?fq=tid:(16 OR 38), where 16 and 38 are the term ids
于 2012-05-25T19:42:19.607 回答