在我的项目中,我必须使用Eventregistry.org events API搜索具有特定关键字的特定文章。
问题是,如果我添加多个关键字,它似乎会执行" AND"搜索而不是" OR"。 (搜索ipad单独~8k结果,搜索表面单独~40k结果,搜索ipad表面一起得到9结果)
我正在使用cakephp 3,但我认为语言不是问题,我认为是最终的网址。我去了Python项目并找到了一些Query.AND(params)和Query.OR(params)所以我认为这可以做到了吗?但是我不知道Python。
这是我的网址:
Readonly<T>
上的Python回购
答案 0 :(得分:1)
嗯,至少可以说,他们的文档并没有过多的信息。
看起来他们正在使用某种查询语言,您可以通过调试Python脚本生成的请求来弄清楚事情的样子,但如果您不熟悉Python,请尝试使用{{3}相反,显然它支持布尔条件(OR
,AND
,NOT
,后者表示为-
),它们被组合成一个JSON结构:
检查您的浏览器网络控制台以检查生成的网址,它们将包含一个query
密钥,其中包含一个JSON字符串,如下所示:
{"$query":{"$and":[{"$or":[{"keyword":{"$and":["ipad"]}},{"keyword":{"$and":["surface"]}}]}]}}
{
"$query": {
"$and": [
{
"$or": [
{
"keyword": {
"$and": [
"ipad"
]
}
},
{
"keyword": {
"$and": [
"surface"
]
}
}
]
}
]
}
}
这与博客文章显示的内容略有不同,但似乎其中显示的更紧凑的变体也有效:
{"$query":{"keyword":{"$or":["ipad","surface"]}}}
{
"$query": {
"keyword": {
"$or": [
"ipad",
"surface"
]
}
}
}
所以最终的网址可能如下所示:
http://eventregistry.org/json/article?action=getArticles&articlesCount=20&articlesSortBy=date&resultType=articles&query={"$query":{"keyword":{"$or":["ipad","surface"]}}}
http://eventregistry.org/json/article
?action=getArticles
&articlesCount=20
&articlesSortBy=date
&resultType=articles
&query={"$query":{"keyword":{"$or":["ipad","surface"]}}}