4

想要构建一个使用 SOLR 作为唯一后端的 Web 应用程序。尽管对 CRUD 有一些需求,但大部分数据将通过离线作业存储在 SOLR 中。

看看当今流行的 Web 框架,如 Rails、Django、web2py 等。尽管 NoSQL 的生产力的最佳点似乎仍然是围绕在 RDBMS 之上的活动记录实现。

就生产力而言,以 SOLR 作为后端构建 Web 应用程序的最佳框架是什么?

4

4 回答 4

2

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 和接受后的额外行。这就对了。

于 2010-09-02T20:25:04.780 回答
2

以上三个答案都是对开发框架的重要建议。我会绕过你的问题,问“哪个是最适合我的 web 应用程序框架”,而不是“哪个最适合 Solr”,并根据你的技能、你周围的社区和其他软因素做出决定。特别是如果您完全不知道该走哪条路。

如果您有喜欢 Grails 并且可以帮助您入门的朋友,那么 Grails 可能是您的最佳选择。有一个定期开会的 Python 小组吗?然后 Django 可以提供很多东西。我个人喜欢 Rails,所以我会推荐 Rails。但这只是“我喜欢什么”与“什么是最好的”的建议。

Solr 的美妙之处在于它与前端的无关性。它在很多环境中都很好玩!

于 2010-09-03T14:19:07.347 回答
1

我会使用 Sunspot 1.2 和 Rails 3。

Sunspot 通常用作 ActiveRecord 扩展,但也被设计为与 ORM 无关。Rails 3 已经将 ActiveRecord 从框架中解耦,使得完全无 ORM 变得容易。

http://outoftime.github.com/sunspot/

于 2010-09-02T21:59:31.223 回答
0

顺便说一句,SphinxSearch 比 solr/lucence 快得多,而且有许多独特的功能。与我的经验和独立基准相比,搜索准确性也要好得多。

它具有原生的、非常简单的 python api,并且与 web2py 很好地集成。

但它需要一个 RDBMS 。我正在使用它,web2py + sphinxsearch,构建一个办公文件搜索引擎。

你也可以试一试。

www.sphinxsearch.com

于 2010-09-09T16:52:47.423 回答