我需要使用Google App Engine进行全文搜索。我找到了项目Whoosh并且它工作得非常好,只要我使用App Engine开发环境......当我将我的应用程序上传到App Engine时,我得到以下TraceBack。对于我的测试,我使用的是此项目中提供的示例应用程序。我知道我做错了什么?
<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
这是我在Python文件中的导入。
# Whoosh ----------------------------------------------------------------------
sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), '..', 'utils')))
from whoosh.fields import Schema, STORED, ID, KEYWORD, TEXT
from whoosh.index import getdatastoreindex
from whoosh.qparser import QueryParser, MultifieldParser
提前感谢您的帮助!
答案 0 :(得分:6)
您可以通过下载和使用专门针对使用Google App Engine的Whoosh版本Whoosh-Appengine来解决您的问题。
答案 1 :(得分:4)
这是关于实施全文搜索的官方示例:http://code.google.com/p/guestbook-example-appengine-full-text-search/
我正在阅读它,因为我需要实现它,也许它也会帮助其他人。
答案 2 :(得分:3)
应用引擎不支持编组模块。它在那里,但它是空的。那个元帅在开发中正常工作。环境已经registered as an issue。
你可以尝试以下方法来编组marshal模块。在执行任何其他导入之前,请输入以下代码:
import pickle
import marshal
marshal.loads = pickle.loads
marshal.dumps = pickle.dumps # I assume it needs dumps also
我没试过这个,所以我完全不知道它是否会起作用!还要注意,pickle加载/转储比编组加载/转储慢。
答案 3 :(得分:1)
这不是我的工具,但它说:
我已经通过移植http://whoosh.ca/创建了一个全文搜索API,因此它是可用的 在AppEngine上。 (它将索引存储在数据存储区中)
您可以从http://github.com/tallstreet/Whoosh-AppEngine/tree/master
下载它包含所有Whooshes功能,包括:
1 Pythonic API。 2 Fielding索引和搜索。 3快速索引和检索 4可插拔评分算法(包括BM25F),文本分析,存储,发布 格式等 5通过pyparsing解析的强大查询语言。 6纯Python拼写检查