谷歌自定义搜索引擎返回与相同的查询不同的结果?
为什么谷歌的自定义搜索引擎进行相同的查询字符串返回不同的结果?
只是要清楚,我不试图重现实际的谷歌搜索引擎的结果。我只是想从自定义搜索一致的结果。
我使用CSE的实践项目,我工作的分页。当我提出相同的请求两次,改变start
参数只值,我得到大不相同searchInformation.totalResults
值。
当我做了一个返回百万计的结果的随机项(例如鸡)一个正常的搜索,请求之间的区别是数以百万计。
当我做设计只返回相对较少的结果的疯狂搜索,所不同的是足以显著改变搜索结果的页面数。
下面是一个例子疯狂搜索:鸡马来西亚竞争-masterchef serama BBC的Facebook
如果我跑了一次,它可能会返回40个结果。如果我去了“下一页”的结果(增加了10的start
参数),它可以说49个结果...或21个结果......这是所有的地方。
为什么会这样发生?
下面是我的代码(节点)的一个子集:
function cseSearch (req) {
let searchType = req.query.searchType
let cseId = process.env['CSE_ID_' + searchType.toUpperCase()]
let start = req.query.page ? (req.query.page * 10) - 10 : 1
if (start < 1) start = 1
let options = {
uri: '/',
qs: {
q: req.query.query,
cx: cseId,
key: process.env.API_KEY,
num: 10,
safe: 'high',
start: start
},
json: true
}
return rp(options)
.then(results => {
console.log(results.searchInformation)
console.log(results)
let pages = Math.floor(results.searchInformation.totalResults / 10) + 1
let data = {
searchType: req.query.searchType,
searchTime: results.searchInformation.formattedSearchTime,
resultCount: results.searchInformation.formattedTotalResults,
items: results.items,
pages: pages
}
console.log(`pages: ${pages}`)
return data
})
.catch(error => {
console.log(error)
return error
})
}
rp()
是request-promise-native
模块。- 我CSE项目设置不指定任何域和使用
Thing
架构。
您可以在,但它仍然是相当粗糙。
回答如下:由于谷歌使用了这么多的服务器/集群,这是不太可能,你每次都会得到一致的结果。出于这个原因,你必须,如果它是一个新的查询,每次指定开始参数。
谷歌自定义搜索引擎返回与相同的查询不同的结果?
为什么谷歌的自定义搜索引擎进行相同的查询字符串返回不同的结果?
只是要清楚,我不试图重现实际的谷歌搜索引擎的结果。我只是想从自定义搜索一致的结果。
我使用CSE的实践项目,我工作的分页。当我提出相同的请求两次,改变start
参数只值,我得到大不相同searchInformation.totalResults
值。
当我做了一个返回百万计的结果的随机项(例如鸡)一个正常的搜索,请求之间的区别是数以百万计。
当我做设计只返回相对较少的结果的疯狂搜索,所不同的是足以显著改变搜索结果的页面数。
下面是一个例子疯狂搜索:鸡马来西亚竞争-masterchef serama BBC的Facebook
如果我跑了一次,它可能会返回40个结果。如果我去了“下一页”的结果(增加了10的start
参数),它可以说49个结果...或21个结果......这是所有的地方。
为什么会这样发生?
下面是我的代码(节点)的一个子集:
function cseSearch (req) {
let searchType = req.query.searchType
let cseId = process.env['CSE_ID_' + searchType.toUpperCase()]
let start = req.query.page ? (req.query.page * 10) - 10 : 1
if (start < 1) start = 1
let options = {
uri: '/',
qs: {
q: req.query.query,
cx: cseId,
key: process.env.API_KEY,
num: 10,
safe: 'high',
start: start
},
json: true
}
return rp(options)
.then(results => {
console.log(results.searchInformation)
console.log(results)
let pages = Math.floor(results.searchInformation.totalResults / 10) + 1
let data = {
searchType: req.query.searchType,
searchTime: results.searchInformation.formattedSearchTime,
resultCount: results.searchInformation.formattedTotalResults,
items: results.items,
pages: pages
}
console.log(`pages: ${pages}`)
return data
})
.catch(error => {
console.log(error)
return error
})
}
rp()
是request-promise-native
模块。- 我CSE项目设置不指定任何域和使用
Thing
架构。
您可以在,但它仍然是相当粗糙。
回答如下:由于谷歌使用了这么多的服务器/集群,这是不太可能,你每次都会得到一致的结果。出于这个原因,你必须,如果它是一个新的查询,每次指定开始参数。