在Open Search Server上使用RESTFul API时使用构面过滤

时间:2014-05-06 13:10:26

标签: php search-engine open-search-server

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

我正在使用以下网址(搜索字段模板,我的模板名为'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上。

1 个答案:

答案 0 :(得分:1)

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

例如:

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

您可以在this page找到更多信息。