Полнотекстовый поиск в App Engine с Whoosh - PullRequest
10 голосов
/ 22 июня 2009

Мне нужно выполнить полнотекстовый поиск с помощью 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

Заранее благодарю за помощь!

Ответы [ 4 ]

6 голосов
/ 23 июня 2009

Возможно, вы сможете решить свои проблемы, загрузив и используя Whoosh-Appengine , версию Whoosh, специально предназначенную для работы с Google App Engine.

4 голосов
/ 03 июля 2010

Это официальный пример реализации полнотекстового поиска: http://code.google.com/p/guestbook-example-appengine-full-text-search/

В настоящее время я читаю его, так как мне нужно его реализовать, возможно, это поможет и другим.

3 голосов
/ 22 июня 2009

Модуль маршала не поддерживается в движке приложения. Он есть, но он пуст. Этот маршал работает как обычно в dev. среда зарегистрирована как проблема .

См. документацию .

Вы можете попробовать следующее, чтобы установить модуль маршала. Перед выполнением любого другого импорта поместите следующий код:

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

Я этого не пробовал, поэтому понятия не имею, сработает ли это! Также следует помнить, что маринованные загрузки / дампы выполняются медленнее, чем маршальные загрузки / дампы.

1 голос
/ 22 декабря 2010

См. Комментарий № 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 для проверки орфографии

...