2009-06-22 8 views
10

के साथ ऐप इंजन पर पूर्ण-पाठ खोज मुझे Google App Engine के साथ पूर्ण टेक्स्ट खोज करने की आवश्यकता है। मैंने प्रोजेक्ट Whoosh पाया और यह वास्तव में अच्छी तरह से काम करता है, जब तक कि मैं ऐप इंजन डेवलपमेंट वातावरण का उपयोग करता हूं ... जब मैं ऐप इंजन पर अपना एप्लिकेशन अपलोड करता हूं, तो मुझे निम्न 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 

यहां मेरे पाइथन फ़ाइल में आयात है।

# 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 

आपकी मदद के लिए अग्रिम धन्यवाद!

उत्तर

3

मार्शल मॉड्यूल ऐप इंजन पर समर्थित नहीं है। यह वहां है, लेकिन यह खाली है। वह मार्शल देव में सामान्य के रूप में काम कर रहा है। पर्यावरण registered as an issue रहा है।

the documentation देखें।

आप मार्शल मॉड्यूल को बंदरपैच करने के लिए निम्न कोशिश कर सकते हैं। इससे पहले कि आप किसी अन्य आयात कर निम्नलिखित कोड डालें:

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

मैं इस प्रयास नहीं किया है, तो मैं पूरी तरह से पता नहीं है अगर यह काम करेंगे है! यह भी ध्यान रखें कि मसाले के भार/डंप की तुलना में अचार भार/डंप धीमा है।

+0

ऐप इंजन के लिए मेरे परीक्षण में मैंने देखा है कि पिकल (सीपीकल की बजाय) कभी-कभी मार्शल की तुलना में 10x से अधिक धीमी होती है। – gravitation

6

आप शायद Whoosh-Appengine, जोश संस्करण को डाउनलोड और उपयोग करके अपनी समस्याओं का समाधान कर सकते हैं, जो विशेष रूप से Google App Engine के साथ काम करने के लिए लक्षित है। http://code.google.com/p/guestbook-example-appengine-full-text-search/

मैं वर्तमान में यह माध्यम से पढ़ रहा हूँ के रूप में मैं इसे लागू करने की जरूरत होती है, शायद यह दूसरों को भी मदद मिलेगी:

+1

मैं उस संस्करण का उपयोग कर रहा हूं ... यह केवल विकास एनवी में काम करता है। – Martin

+2

ध्यान रखें कि यदि आप इस समस्या को ठीक करते हैं, तो व्हाउश-एपेंगिन बस डेटास्टोर को फ़ाइल स्टोर के रूप में उपयोग करता है, और 1 एमबी सीमा का सम्मान नहीं करता है - इसलिए यह किसी भी पर्याप्त मात्रा में डेटा के लिए काम नहीं कर सकता है। –

+0

वर्तमान हुओश रिलीज के अंदर जीई के लिए अब प्रयोगात्मक समर्थन है। 2.4.1 रिलीज में 'व्हाओश/दायर/gae.py' देखें। – hangtwenty

4

यह पूर्ण पाठ खोज लागू करने के बारे में एक आधिकारिक उदाहरण है।

1

टिप्पणी देखें # 71 यहाँ: http://code.google.com/p/googleappengine/issues/detail?id=217&q=Whoosh&colspec=ID%20Type%20Status%20Priority%20Stars%20Owner%20Summary%20Log%20Component#c71:

यह मेरी उपकरण नहीं है, लेकिन यह कहते हैं:

मैं http://whoosh.ca/ पोर्टिंग द्वारा एक पूर्ण पाठ खोज एपीआई बनाया है तो यह उपलब्ध AppEngine पर है। (यह डेटासंग्रह में सूचकांक संग्रहीत करता है)

आप से http://github.com/tallstreet/Whoosh-AppEngine/tree/master

यह whooshes के सभी सहित विशेषताएं शामिल इसे डाउनलोड कर सकते हैं:

1 pythonic एपीआई। 2 फ़ील्ड किए गए अनुक्रमण और खोज। 3 फास्ट इंडेक्सिंग और पुनर्प्राप्ति 4 प्लग करने योग्य स्कोरिंग एल्गोरिदम (बीएम 25 एफ समेत), टेक्स्ट विश्लेषण, स्टोरेज, प्रारूप, आदि पाइपर्सिंग द्वारा पार्स की गई शक्तिशाली क्वेरी भाषा। 6 शुद्ध पायथन वर्तनी-परीक्षक