想要构建一个使用 SOLR 作为唯一后端的 Web 应用程序。尽管对 CRUD 有一些需求,但大部分数据将通过离线作业存储在 SOLR 中。
看看当今流行的 Web 框架,如 Rails、Django、web2py 等。尽管 NoSQL 的生产力的最佳点似乎仍然是围绕在 RDBMS 之上的活动记录实现。
就生产力而言,以 SOLR 作为后端构建 Web 应用程序的最佳框架是什么?
想要构建一个使用 SOLR 作为唯一后端的 Web 应用程序。尽管对 CRUD 有一些需求,但大部分数据将通过离线作业存储在 SOLR 中。
看看当今流行的 Web 框架,如 Rails、Django、web2py 等。尽管 NoSQL 的生产力的最佳点似乎仍然是围绕在 RDBMS 之上的活动记录实现。
就生产力而言,以 SOLR 作为后端构建 Web 应用程序的最佳框架是什么?
web2py 数据库抽象层目前不支持 SOLR,这意味着您不能使用 DAL 语法来访问 SOLR,也不能使用从 SOLR DB 模式自动生成的表单。然而,您可以使用 SQLFORM.factory 生成表单,就好像您有一个普通的关系数据库并手动执行插入/更新/选择/更新到 SOLR 中一样。web2py 包含用于解析/编写 JSON 和 XMl 的库,因此只需几行代码即可轻松实现 SOLR API。如果您在 web2py 邮件列表中提出这个问题,我们可以提供一些示例来提供帮助。
编辑(从 web2py 邮件列表上的答案复制):
通常在 web2py 中你定义一个模型
db.define_table('message',Field('body'))
然后 web2py 为您生成和处理表单:
form=SQLFORM(db.message)
if form.accepts(request.vars):
do_something
在您的情况下,您不会使用 define_table ,因为 web2py DAL 不支持 SOLR 并且您无法从架构生成表单,但您可以安装它:http ://code.google.com/p/solrpy/ 并且您可以这样做
#in model
import solr
s = solr.SolrConnection('http://example.org:8083/solr')
#in controller
form=SQLFORM.factory(Field('body'))
if form.accepts(request.vars):
s.add(mody=request.vars.body)
s.commit()
do_something
所以区别是 SQLFORM.factory 而不是 SQLFORM 和接受后的额外行。这就对了。
以上三个答案都是对开发框架的重要建议。我会绕过你的问题,问“哪个是最适合我的 web 应用程序框架”,而不是“哪个最适合 Solr”,并根据你的技能、你周围的社区和其他软因素做出决定。特别是如果您完全不知道该走哪条路。
如果您有喜欢 Grails 并且可以帮助您入门的朋友,那么 Grails 可能是您的最佳选择。有一个定期开会的 Python 小组吗?然后 Django 可以提供很多东西。我个人喜欢 Rails,所以我会推荐 Rails。但这只是“我喜欢什么”与“什么是最好的”的建议。
Solr 的美妙之处在于它与前端的无关性。它在很多环境中都很好玩!
我会使用 Sunspot 1.2 和 Rails 3。
Sunspot 通常用作 ActiveRecord 扩展,但也被设计为与 ORM 无关。Rails 3 已经将 ActiveRecord 从框架中解耦,使得完全无 ORM 变得容易。
顺便说一句,SphinxSearch 比 solr/lucence 快得多,而且有许多独特的功能。与我的经验和独立基准相比,搜索准确性也要好得多。
它具有原生的、非常简单的 python api,并且与 web2py 很好地集成。
但它需要一个 RDBMS 。我正在使用它,web2py + sphinxsearch,构建一个办公文件搜索引擎。
你也可以试一试。
www.sphinxsearch.com