0

如何使用 Open Search Server 中的 RESTFul API 过滤搜索结果?

我正在使用以下 URL(搜索字段模板,我的模板名为“搜索”,我将 /search 从 Apache 代理到 Tomcat): http://domain.com:8080/search/services/rest/index/intranet/search/field/search

以下 JSON 有效:

$json = '
{
    "query": "OSH",
    "start": 0,
    "rows": 10,
    "lang": "ENGLISH"
}';

我有一个名为的方面lang,显示价值"en"有 450 个文档。所以,我尝试了这个(基于渲染器功能):

$json = '
{
    "query": "OSH&fq=lang%3A\\"en\\"",
    "start": 0,
    "rows": 10,
    "lang": "ENGLISH"
}';

事实证明,字符串中的所有术语都被解析并添加到查询中:

public 'query' => string '(+title:osh^10.0 +title:fq^10.0 +title:lang^10.0 +title:3a^10.0 +title:en^10.0) title:"osh fq lang 3a en"^10.0 (+titleExact:osh^10.0 +titleExact:fq^10.0 +titleExact:lang^10.0 +titleExact:3a^10.0 +titleExact:en^10.0) titleExact:"osh fq lang 3a en"^10.0 (+titlePhonetic:oS^10.0 +titlePhonetic:fk^10.0 +titlePhonetic:lank^10.0 +(titlePhonetic:a^10.0 titlePhonetic:i^10.0) +(titlePhonetic:en^10.0 titlePhonetic:jen^10.0)) titlePhonetic:"oS fk lank"^10.0 (+content:osh +content:fq +content:lang +content:3a +content:e'... (length=1669)

我在 Open Search Server 上1.53

4

1 回答 1

1

您可以使用 JSON 中的数组来过滤搜索,如此filters所示。

例如:

{
    "query": "OSH",
    "start": 0,
    "rows": 10,
    "lang": "ENGLISH",
    "filters": [
      {
        "type": "QueryFilter",
        "negative": false,
        "query": "lang:en"
       }
    ]
}

您将在此页面上找到更多信息。

于 2014-05-07T08:45:48.053 回答