2009-06-22 33 views
10

Tôi cần tìm kiếm toàn văn bằng Google App Engine. Tôi tìm thấy các dự án Whoosh và nó hoạt động thực sự tốt, miễn là tôi sử dụng môi trường phát triển App Engine ... Khi tôi tải ứng dụng của mình lên App Engine, tôi nhận được TraceBack sau đây. Đối với các thử nghiệm của tôi, tôi đang sử dụng ứng dụng ví dụ được cung cấp trong dự án này. Bất kỳ ý tưởng về những gì tôi đang làm sai?Tìm kiếm toàn văn trên App Engine với Whoosh

<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 

Đây là lần nhập tôi có trong tệp Python của mình.

# 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 

Cảm ơn bạn đã trợ giúp!

Trả lời

3

Mô-đun nguyên soái không được hỗ trợ trên công cụ ứng dụng. Nó ở đó, nhưng nó trống rỗng. Vị nguyên soái đó hoạt động bình thường trong dev. môi trường là registered as an issue.

Xem the documentation.

Bạn có thể thử những điều sau đây để monkeypatch mô-đun nguyên soái. Đặt mã sau đây trước khi bạn thực hiện bất kỳ mục nhập nào khác:

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

Tôi chưa thử điều này, vì vậy tôi hoàn toàn không biết nó có hoạt động hay không! Cũng cần lưu ý rằng tải trọng/bãi chứa chậm hơn so với tải trọng/kết xuất thô.

+0

Trong thử nghiệm của tôi cho App Engine, tôi đã nhận thấy dưa (thay vì cPickle) đôi khi chậm hơn gấp 10 lần so với nguyên soái. – gravitation

6

Bạn có thể giải quyết vấn đề của mình bằng cách tải xuống và sử dụng Whoosh-Appengine, phiên bản Whoosh được nhắm mục tiêu cụ thể để làm việc với Google App Engine.

+1

Tôi đang sử dụng phiên bản đó ... nó chỉ hoạt động trong Phát triển Env. – Martin

+2

Ghi nhớ rằng ngay cả khi bạn khắc phục sự cố này, Whoosh-Appengine chỉ sử dụng kho dữ liệu dưới dạng kho lưu trữ tệp và không tôn trọng giới hạn 1MB - vì vậy nó có thể không hoạt động với bất kỳ lượng dữ liệu đáng kể nào. –

+0

Hiện tại, có hỗ trợ thử nghiệm cho gae bên trong bản phát hành Whoosh hiện tại. Xem 'whoosh/filedb/gae.py' trong bản phát hành 2.4.1. – hangtwenty

1

Xem bình luận # 71 ở đây: http://code.google.com/p/googleappengine/issues/detail?id=217&q=Whoosh&colspec=ID%20Type%20Status%20Priority%20Stars%20Owner%20Summary%20Log%20Component#c71:

Đó không phải là công cụ của tôi, nhưng nó nói:

tôi đã tạo ra một văn bản api tìm kiếm toàn bởi porting http://whoosh.ca/ để nó có sẵn trên AppEngine. (Nó lưu trữ các chỉ số trong kho dữ liệu)

Bạn có thể tải nó từ http://github.com/tallstreet/Whoosh-AppEngine/tree/master

Nó bao gồm tất cả các tính năng Whooshes bao gồm:

1 Pythonic API. 2 Lập chỉ mục và tìm kiếm. 3 Lập chỉ mục và truy xuất nhanh 4 Thuật toán tính điểm có thể đặt cọc (bao gồm BM25F), phân tích văn bản, lưu trữ, đăng định dạng, v.v. 5 Ngôn ngữ truy vấn mạnh được phân tích cú pháp bằng pyparsing. 6 Trình kiểm tra chính tả Python tinh khiết

Các vấn đề liên quan