首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在grails中进行web搜索

如何在grails中进行web搜索
EN

Stack Overflow用户
提问于 2012-04-12 13:01:24
回答 2查看 381关注 0票数 0

嗨,我是一个正在做我的学术项目的学生,我需要一些完成我的项目的指导。

我的项目是基于grails框架,从3个不同的书店搜索图书,并给出所有3个商店的d价格。我需要在搜索部分的帮助。如何在用户输入所需图书后直接搜索这些书店。

提前感谢

EN

回答 2

Stack Overflow用户

发布于 2012-04-12 14:16:14

你需要提供更多的细节。通过搜索书店,你是指在数据库中搜索,还是像亚马逊等一样?

票数 1
EN

Stack Overflow用户

发布于 2012-04-12 18:53:38

我会找出这些在线书店是否有API,或者如果你可以选择,选择做的在线书店API,你可以用它来进行搜索。例如,亚马逊有一个"Product Advertising API“,可用于搜索其目录(请参阅http://docs.amazonwebservices.com/AWSECommerceService/latest/DG)。你通常必须注册为会员才能访问这类东西。

一旦您有了几个可以通过API访问的在线书店,编写一些grails代码来调用它们并协调结果就相对容易了。API通常采用Web请求的形式,要么是REST,要么是SOAP (例如,参见Amazon - AnatomyOfaRESTRequest)。Groovy的HTTPBuilder可以用来调用和消费书店的API服务,如果你能使用简单的REST,或者我相信有几个Grails插件(例如REST Client builder)。对于SOAP,考虑一下Grails CXF Client Grails插件。

您可以逐个对API进行搜索,或者如果您想获得更高级的功能,可以尝试使用新的Servlet3.0异步特性同时调用所有3个API(请参阅如何在Grails 2.0.x中使用:Grails Web Features -滚动到“Servlet3.0异步特性”)。您可能需要通过DB来协调这一点,也许还需要在结果页面上通过AJAX进行轮询,以检查何时收到结果。

因此,序列如下:

  1. 用户将搜索请求从页面上的表单提交到服务器

API服务器创建并保存DB对象以跟踪请求,异步启动

  1. 调用(即不阻止请求),然后将页面返回给用户。
  2. 向用户显示"pending results“页面,并使用定期AJAX更新来检查results.
  3. Meanwhile
  4. 调用正在执行的进度。当它们返回时,希望带有结果,它们会更新DB对象(或者更好的是,一个相关对象)来存储结果和call.
  5. Eventually的状态所有结果都将存储在DB中,并且您对查询结果的服务器的定期AJAX检查将能够将它们返回到页面。它可以等待对3家书店的所有调用完成,也可以在获得结果时更新页面。
  6. 您的AJAX调用将更新页面以向用户显示结果。

注意:如果你的书店没有API,你可能不得不考虑直接从书店的网站上“网络抓取”结果。这是一个有点困难,可以是相当脆弱的,因为网页明显频繁变化。我已经使用Geb (http://www.gebish.org/)自动化了浏览,并使用一些简单的字符串匹配来挑选出我需要的东西。还要记得检查所涉及的网站的条款和条件,因为有时刮刮是特别不允许的。

还要注意的是,上面是一种面向服务器的方法来完成这类事情。您可以完全在客户端(浏览器)上执行此操作,使用AJAX调用via服务并通过JavaScript进行处理。但我是一个服务器管理员:)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10117625

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档