Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 应用程序引擎上的全文搜索_Python_Google App Engine_Full Text Search_Whoosh - Fatal编程技术网

Python 应用程序引擎上的全文搜索

Python 应用程序引擎上的全文搜索,python,google-app-engine,full-text-search,whoosh,Python,Google App Engine,Full Text Search,Whoosh,我需要用谷歌应用程序引擎做全文搜索。我找到了这个项目,它运行得非常好,只要我使用应用程序引擎开发环境。。。当我将我的应用程序上传到AppEngine时,我得到了以下回溯。对于我的测试,我正在使用本项目中提供的示例应用程序。知道我做错了什么吗 <type 'exceptions.ImportError'>: cannot import name loads Traceback (most recent call last): File "/base/data/home/apps/m

我需要用谷歌应用程序引擎做全文搜索。我找到了这个项目,它运行得非常好,只要我使用应用程序引擎开发环境。。。当我将我的应用程序上传到AppEngine时,我得到了以下回溯。对于我的测试,我正在使用本项目中提供的示例应用程序。知道我做错了什么吗

<type 'exceptions.ImportError'>: cannot import name loads
Traceback (most recent call last):
  File "/base/data/home/apps/myapp/1.334374478538362709/hello.py", line 6, in <module>
    from whoosh import store
  File "/base/data/home/apps/myapp/1.334374478538362709/whoosh/__init__.py", line 17, in <module>
    from whoosh.index import open_dir, create_in
  File "/base/data/home/apps/myapp/1.334374478538362709/whoosh/index.py", line 31, in <module>
    from whoosh import fields, store
  File "/base/data/home/apps/myapp/1.334374478538362709/whoosh/store.py", line 27, in <module>
    from whoosh import tables
  File "/base/data/home/apps/myapp/1.334374478538362709/whoosh/tables.py", line 43, in <module>
    from marshal import loads

提前感谢您的帮助

应用程序引擎不支持封送处理模块。它在那里,但它是空的。该封送处理在开发环境中正常工作

您可以尝试以下方法来修补封送处理模块。在执行任何其他导入之前,请输入以下代码:

import pickle
import marshal
marshal.loads = pickle.loads
marshal.dumps = pickle.dumps # I assume it needs dumps also

我还没有尝试过这个,所以我完全不知道它是否有效!还要注意,pickle加载/转储比marshal加载/转储慢。

您可以通过下载和使用专门针对Google App Engine的Whoosh版本来解决问题。

这是一个关于实现全文搜索的官方示例:

我目前正在通读它,因为我需要实现它,也许它也会帮助其他人。

请参见此处的注释71: :

这不是我的工具,但上面写着:

我已经通过移植创建了一个全文搜索api,因此它是可用的 在阿彭金。(它将索引存储在数据存储中)

你可以从

它包括所有嗖嗖声功能,包括:

1个Python API。 2现场索引和搜索。 3快速索引和检索 4可插拔评分算法(包括BM25F)、文本分析、存储、发布 格式等。 5通过pyparsing解析的强大查询语言。
6纯Python拼写检查器

我正在使用该版本。。。它只在开发环境中工作。请记住,即使您解决了这个问题,Whoosh Appengine也只是将数据存储用作文件存储,并且不遵守1MB限制,因此它可能无法处理任何大量数据。目前的Whoosh版本中对gae提供了实验性支持。请参阅2.4.1版本中的
whoosh/filedb/gae.py
。在对App Engine的测试中,我注意到pickle(而不是cPickle)有时比marshal慢10倍多。
import pickle
import marshal
marshal.loads = pickle.loads
marshal.dumps = pickle.dumps # I assume it needs dumps also