如何在 Google App Engine 中执行全文搜索?

Posted

技术标签:

【中文标题】如何在 Google App Engine 中执行全文搜索?【英文标题】:How can one perform full text search in Google App Engine? 【发布时间】:2010-11-20 19:26:18 【问题描述】:

这是一个简单的问题,但我在任何地方都没有找到答案。感谢您的想法和意见。

我也在使用 Django,因为它的价值。 :)

干杯。

【问题讨论】:

自 2011 年 Google I/O 以来,这种情况是否会发生变化,尤其是 google.com/events/io/2011/sessions/full-text-search.html 【参考方案1】:

搜索 API 是 now available,作为 Java 和 Python 的实验性。

【讨论】:

【参考方案2】:

使用 Java GAE,您可以使用 Compass,但这对 Django 没有帮助。对于 Python,Bill Katz 提供 one solution -- 开源 -- 和 these guys 提供特定于 Django 的方法,但是,该方法仅对非商业应用程序免费(即,如果您的应用程序赚钱,他们希望您付费他们的全文搜索)。我对这两种解决方案都没有实际经验,因此我无法提供有根据的建议,但从人们可以看到的情况来看,它们似乎非常有用。

【讨论】:

不确定是否有任何 lucene python 端口可以在 gae 上运行,但我想试试 em 也无妨? 注意您列出的 Django 特定方法:Gae-search 至少需要 app-engine-patch 1.0.2(App Engine 的 Django 端口)。它不适用于 django-helper 或 webapp。【参考方案3】:

我知道的 Python App Engine 搜索概述:

Google 确实使用 SearchableModel 添加了缩减搜索,尽管它有限制(索引字数限制为 5000 个,字符串属性仅不是文本):

http://groups.google.com/group/google-appengine/browse_thread/thread/f64eacbd31629668/8dac5499bd58a6b7?lnk=gst&q=searchablemodel

或者正如另一位发帖人指出的那样,有以下选项:

快速简单的文本搜索:

http://www.billkatz.com/2009/6/Simple-Full-Text-Search-for-App-Engine

这个产品有一个比较全面的免费版本和一个更广泛的商业版本:

http://gae-full-text-search.appspot.com/customers/download/

我听说 Google 确实有一个项目可以将全文搜索带入 App Engine,尽管这不会很快发生


我真的很想看看各种搜索框架的比较,看看它们是如何相互叠加的。有人知道这样的报道吗?


编辑: Google Search API now available (although still experimental)

【讨论】:

链接失效gae-full-text-search.appspot.com/customers/download【参考方案4】:

目前,真正的答案是在 Google App Engine 上没有真正的全文搜索。此处其他答案提供的解决方案适用于玩具数据集,但不能扩展到超过 O(10000) 个文档左右。谷歌必须提供搜索作为 GAE 的基础设施功能。请参阅feature request 进行(大部分是多余的)讨论。

【讨论】:

【参考方案5】:

@ 快速简单的文本搜索: http://www.billkatz.com/2009/6/Simple-Full-Text-Search-for-App-Engine


这个解决方案对我不起作用 - 看看下面的限制,它不太可能对实际用例有用。

    它使用 StringListProperty 存储短语,限制为 500 个字符。 它不适用于标准查询过滤器。

【讨论】:

【参考方案6】:

Issue 217 Bill Katz 发布了一个包来处理,http://gae-full-text-search.appspot.com/ 也可用,levensthein 是另一种匹配措施

【讨论】:

【参考方案7】:

您应该能够调整 Whoosh! 以写入数据存储而不是磁盘。这是一个纯python全文搜索引擎。它不如 Lucene 快或功能齐全,但它应该可以在 GAE 上运行而无需进行太多修改。

【讨论】:

以上是关于如何在 Google App Engine 中执行全文搜索?的主要内容,如果未能解决你的问题,请参考以下文章

如何配置 Google App Engine app.yaml 文件以强制 https

如何减少 Google App Engine 数据存储延迟?

在 Google App Engine (Java) 中使用 Cron 执行后端

如何在 Google App Engine app.yaml 中处理尾部斜线

Google App Engine cron 作业未显示

如何在 Django/Google App Engine 中制作日志颜色?