如何在 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 执行后端