Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/api/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
搜索API-HTTP查询参数格式_Api_Http_Url_Search_Solr - Fatal编程技术网

搜索API-HTTP查询参数格式

搜索API-HTTP查询参数格式,api,http,url,search,solr,Api,Http,Url,Search,Solr,我已经为我工作的网站创建了一个搜索API。例如,它支持的一些查询包括: /api/search-返回流行的搜索结果 /api/search?q=car-返回与术语“car”匹配的结果 /api/search?start=50&limit=50-返回从偏移量50开始的50个结果 /api/search?user_id=3987-返回id为3987的用户拥有的结果 这些查询参数可以混合和匹配。它是在引擎盖下使用的分面搜索实现的 我正在添加可以根据数值属性过滤结果的查询参数。例如,我可能只希望返回

我已经为我工作的网站创建了一个搜索API。例如,它支持的一些查询包括:

  • /api/search
    -返回流行的搜索结果
  • /api/search?q=car
    -返回与术语“car”匹配的结果
  • /api/search?start=50&limit=50
    -返回从偏移量50开始的50个结果
  • /api/search?user_id=3987
    -返回id为3987的用户拥有的结果
这些查询参数可以混合和匹配。它是在引擎盖下使用的分面搜索实现的

我正在添加可以根据数值属性过滤结果的查询参数。例如,我可能只希望返回视图计数大于100的结果。我想知道指定这一点的最佳实践是什么

Solr使用这种方式:

/api/search?views:[100 TO *]
谷歌似乎在做这样的事情:

/api/search?viewsisgt:100

这两个似乎对我都不太有吸引力。是否有指定此类查询术语的最佳实践?有什么建议吗?

谷歌的方法很好,为什么没有吸引力

我的建议如下:

/api/search?viewsgt=100

谷歌的方法是好的,为什么它没有吸引力

我的建议如下:

/api/search?viewsgt=100

我认为极限的数学表示法是合适的

[x  the lower limit can be atleast x
x]  the upper limit can be atmost x
(x  the lower limit must be strictly greater than x
x)  the upper limit must be strictly lesser than x
因此,

q=cats&range=(100,200) - the results from 100 to 200, but not including 100 and 200
q=cats&range=[100,200) - the results from 100 to 200, but the lower limit can be greater than 100
q=cats&range=[100 - any number from 100 onwards
q=cats&range=(100 - any number greater than 100
q=cats&range=100,200 - default, same as [100,200] 
当然,它的美学仍然值得怀疑,但它似乎(依我看)是人眼最直观的,解析器仍然很容易


根据=,&,[,],(,)保留

我认为极限的数学符号是合适的

[x  the lower limit can be atleast x
x]  the upper limit can be atmost x
(x  the lower limit must be strictly greater than x
x)  the upper limit must be strictly lesser than x
因此,

q=cats&range=(100,200) - the results from 100 to 200, but not including 100 and 200
q=cats&range=[100,200) - the results from 100 to 200, but the lower limit can be greater than 100
q=cats&range=[100 - any number from 100 onwards
q=cats&range=(100 - any number greater than 100
q=cats&range=100,200 - default, same as [100,200] 
当然,它的美学仍然值得怀疑,但它似乎(依我看)是人眼最直观的,解析器仍然很容易


根据=,&,[,],(,)是保留的

只需使用“,”作为从/到的分隔符,它读起来最好,在我看来是直观的:


# fixed from/to
/search?views=4,2

# upper wildcard
/search?views=4,

# lower wildcard
/search?views=,4
我把价值观包括在内。在大多数情况下,您不需要额外的独占/包含语法


绑定它甚至在一些开箱即用的框架(比如SpringMVC)中工作得非常好,这些框架将分离的值绑定到一个值数组中。然后可以使用特定的访问器(getMin(),getMax())包装内部数组

只需使用“,”作为from/to的分隔符,它读起来最好,在我看来是直观的:


# fixed from/to
/search?views=4,2

# upper wildcard
/search?views=4,

# lower wildcard
/search?views=,4
我把价值观包括在内。在大多数情况下,您不需要额外的独占/包含语法


绑定它甚至在一些开箱即用的框架(比如SpringMVC)中工作得非常好,这些框架将分离的值绑定到一个值数组中。然后可以使用特定的访问器(getMin(),getMax())包装内部数组

你是说
viewsgt=100
?我不喜欢它的原因是因为有太多的可能性可以解析:
viewsgt
viewslt
viewsgt
viewstte
,它把这个术语和条件混在一起,这似乎不太正确。你是说
viewsgt=100
?我不喜欢它的原因是因为有太多的可能性可以解析:
viewsgt
viewslt
viewsgt
viewslte
,它把这个词和条件混在一起,这似乎是不对的。我从来没有想过这个句子会出现在h2中,我也弄不明白它是怎么来的!这只是一个范围参数。如何指定名称?可能是前缀<代码>查看\u计数\u范围=?或者更确切地说,假设范围规范,所以“仅一个范围参数”没有得到您的理解。多个范围参数的限制/丑陋是什么?您可以指定一个范围来过滤多个参数的结果。这是分面搜索。e、 例如,查找视图计数大于100且帖子计数大于5的项目。我从来没有想过这句话会出现在h2中,我无法理解它是如何出现的!这只是一个范围参数。如何指定名称?可能是前缀<代码>查看\u计数\u范围=?或者更确切地说,假设范围规范,所以“仅一个范围参数”没有得到您的理解。多个范围参数的限制/丑陋是什么?您可以指定一个范围来过滤多个参数的结果。这是分面搜索。e、 例如,查找视图计数大于100且帖子计数大于5的项目