2012-01-25 33 views
1

我在Python 2.7下使用了Whoosh 2.3.2,Haystack 2.0.0和Django 1.3。在本地主機上,它的效果很好。在生產中,當我搜索時會爆炸。Whoosh,Haystack和AttributeError:'Segment'對象在生產中沒有屬性'compound'

以下是完整回溯:

File "/opt/Python2.7/lib/python2.7/site-packages/django/core/handlers/base.py", line 117, in get_response 
    response = middleware_method(request, e) 

    File "/opt/Python2.7/lib/python2.7/site-packages/django/core/handlers/base.py", line 111, in get_response 
    response = callback(request, *callback_args, **callback_kwargs) 

    File "/var/www/html/sites/django_projects/apps/haystack/views.py", line 50, in __call__ 
    return self.create_response() 

    File "/var/www/html/sites/django_projects/apps/haystack/views.py", line 130, in create_response 
    (paginator, page) = self.build_page() 

    File "/var/www/html/sites/django_projects/apps/haystack/views.py", line 107, in build_page 
    self.results[start_offset:start_offset + self.results_per_page] 

    File "/var/www/html/sites/django_projects/apps/haystack/query.py", line 261, in __getitem__ 
    self._fill_cache(start, bound) 

    File "/var/www/html/sites/django_projects/apps/haystack/query.py", line 159, in _fill_cache 
    results = self.query.get_results(**kwargs) 

    File "/var/www/html/sites/django_projects/apps/haystack/backends/__init__.py", line 478, in get_results 
    self.run(**kwargs) 

    File "/var/www/html/sites/django_projects/apps/haystack/backends/__init__.py", line 396, in run 
    results = self.backend.search(final_query, **search_kwargs) 

    File "/var/www/html/sites/django_projects/apps/haystack/backends/__init__.py", line 27, in wrapper 
    return func(obj, query_string, *args, **kwargs) 

    File "/var/www/html/sites/django_projects/apps/haystack/backends/whoosh_backend.py", line 346, in search 
    narrow_searcher = self.index.searcher() 

    File "/var/www/html/sites/django_projects/utils/whoosh/index.py", line 322, in searcher 
    return Searcher(self.reader(), fromindex=self, **kwargs) 

    File "/var/www/html/sites/django_projects/utils/whoosh/filedb/fileindex.py", line 335, in reader 
    info.generation, reuse=reuse) 

    File "/var/www/html/sites/django_projects/utils/whoosh/filedb/fileindex.py", line 322, in _reader 
    readers = [segreader(segment) for segment in segments] 

    File "/var/www/html/sites/django_projects/utils/whoosh/filedb/fileindex.py", line 311, in segreader 
    generation=generation) 

    File "/var/www/html/sites/django_projects/utils/whoosh/filedb/filereading.py", line 66, in __init__ 
    if segment.compound: 

    AttributeError: 'Segment' object has no attribute 'compound' 

這是我的search_index.py:

from haystack import indexes 
from articles.models import Article 
from django.conf import settings 

import datetime 
now = datetime.datetime.now() 

class ArticleIndex(indexes.SearchIndex, indexes.Indexable): 
    text = indexes.CharField(document=True, use_template=True) 

    def get_model(self): 
     return Article 

    def index_queryset(self): 
     """Used when the entire index for model is updated.""" 
     return self.get_model().objects.filter(publication="Published", site=settings.SITE_ID, created__lte=now) 

任何人都熟悉或有什麼建議?

回答

0

沒關係。事實證明,Haystack和Whoosh必須安裝到站點包。將它們放在應用程序文件夾中會導致問題,尤其是如果您有一個utils文件夾。