Ответ 1
Вы могли бы решить свои проблемы, загрузив и используя Whoosh-Appengine, версию Whoosh, специально предназначенную для работы с Google App Engine.
Мне нужно выполнить полный поиск текста в Google App Engine. Я нашел проект Whoosh, и он работает очень хорошо, если я использую Environement разработки 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
Заранее благодарю вас за помощь!
Вы могли бы решить свои проблемы, загрузив и используя Whoosh-Appengine, версию Whoosh, специально предназначенную для работы с Google App Engine.
Это официальный пример реализации полнотекстового поиска: http://code.google.com/p/guestbook-example-appengine-full-text-search/
В настоящее время я читаю это, так как я нуждаюсь в его реализации, возможно, это тоже поможет другим.
Модуль маршала не поддерживается в движке приложения. Он есть, но он пуст. Этот маршал работает нормально в dev. среда была зарегистрирована как проблема.
Смотрите документацию.
Вы можете попробовать следующее: monkeypatch модуль маршала. Поместите следующий код, прежде чем выполнять другие импортные операции:
import pickle
import marshal
marshal.loads = pickle.loads
marshal.dumps = pickle.dumps # I assume it needs dumps also
Я не пробовал этого, поэтому я абсолютно не знаю, будет ли это работать! Также имейте в виду, что рассолы/отвалы медленнее, чем нагрузки/отвалы маршала.
Смотрите комментарий № 71 здесь: http://code.google.com/p/googleappengine/issues/detail?id=217&q=Whoosh&colspec=ID%20Type%20Status%20Priority%20Stars%20Owner%20Summary%20Log%20Component#c71:
Это не мой инструмент, но он говорит:
Я создал полный текстовый поиск api, поместив http://whoosh.ca/, чтобы он был доступен на AppEngine. (он хранит индекс в хранилище данных)
Вы можете скачать его из http://github.com/tallstreet/Whoosh-AppEngine/tree/master
Он включает в себя все функции Whooshes, включая:
1 Pythonic API. 2 Индексирование и поиск полей. 3 Быстрая индексация и поиск 4 Подключаемый алгоритм подсчета очков (включая BM25F), анализ текста, хранение, размещение формат и т.д. 5 Мощный язык запросов, обрабатываемый pyparsing. 6 Проверка орфографии Pure Python