Вопрос

Python 2.5, Django 1.2.1, самый последний сена HayStack, самый недавний WHOOSH

Это мои первые дюйты в Django-Haystack. Я следовал руководству «Начало работы» из стога HayStack, и все, казалось, идет по всему хорошо, пока не поедут построить индекс.

Итак, работает «Manage.py Rebuild_index» снял на меня:

Traceback (most recent call last):
  File "/Users/steenb/Documents/Aptana Studio Workspace/bucksac/buckshr/manage.py", line 11, in <module>
    execute_manager(settings)
  File "/Library/Python/2.5/site-packages/django/core/management/__init__.py", line 438, in execute_manager
    utility.execute()
  File "/Library/Python/2.5/site-packages/django/core/management/__init__.py", line 379, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "/Library/Python/2.5/site-packages/django/core/management/base.py", line 191, in run_from_argv
    self.execute(*args, **options.__dict__)
  File "/Library/Python/2.5/site-packages/django/core/management/base.py", line 218, in execute
    output = self.handle(*args, **options)
  File "/Library/Python/2.5/site-packages/haystack/management/commands/rebuild_index.py", line 13, in handle
    call_command('clear_index', **options)
  File "/Library/Python/2.5/site-packages/django/core/management/__init__.py", line 166, in call_command
    return klass.execute(*args, **defaults)
  File "/Library/Python/2.5/site-packages/django/core/management/base.py", line 218, in execute
    output = self.handle(*args, **options)
  File "/Library/Python/2.5/site-packages/haystack/management/commands/clear_index.py", line 38, in handle
    sb.clear()
  File "/Library/Python/2.5/site-packages/haystack/backends/whoosh_backend.py", line 212, in clear
    self.index.commit()
AttributeError: 'FileIndex' object has no attribute 'commit'

Не уверен, даже куда начать с этого ... кто-нибудь вступил в это раньше?

Любые мысли о решении?

Обновлять: Пробовал это с Python 2.6, а также получить ту же ошибку. Есть ли конфигурация WHOOSH, которую я не сделал?

Обновлять: После использования ниже предложения от Philippbosch первая ошибка больше не появилась, но теперь я получаю это:

Traceback (most recent call last):
  File "/Users/steenb/Documents/Aptana Studio Workspace/bucksac/buckshr/manage.py", line 11, in <module>
    execute_manager(settings)
  File "/Library/Python/2.5/site-packages/django/core/management/__init__.py", line 438, in execute_manager
    utility.execute()
  File "/Library/Python/2.5/site-packages/django/core/management/__init__.py", line 379, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "/Library/Python/2.5/site-packages/django/core/management/base.py", line 191, in run_from_argv
    self.execute(*args, **options.__dict__)
  File "/Library/Python/2.5/site-packages/django/core/management/base.py", line 218, in execute
    output = self.handle(*args, **options)
  File "/Library/Python/2.5/site-packages/haystack/management/commands/update_index.py", line 69, in handle
    return super(Command, self).handle(*apps, **options)
  File "/Library/Python/2.5/site-packages/django/core/management/base.py", line 282, in handle
    app_output = self.handle_app(app, **options)
  File "/Library/Python/2.5/site-packages/haystack/management/commands/update_index.py", line 123, in handle_app
    index.backend.update(index, small_cache_qs[start:end])
  File "/Library/Python/2.5/site-packages/haystack/backends/whoosh_backend.py", line 163, in update
    writer = AsyncWriter(self.index.writer, postlimit=self.post_limit)
TypeError: __init__() got an unexpected keyword argument 'postlimit'

Мне интересно, если я использую несовместимую версию WHOOSH .... Я схватил последний, который составляет 1.0,0b2 ... http://pypi.python.org/pypi/whoosh/

Обновить: Оказывается, это проблема версии. В настоящее время HayStack привязан к WHOOSH 0.3.18

Это было полезно?

Решение

У меня была та же проблема только сейчас. Вы пробовали »update_index" вместо "rebuild_index"? Это, казалось, работало для меня ...

Другие советы

Установка WHOOSH 0.3.18. решил проблему на моей стороне

Если вы нашли этот вопрос, пытаясь удалить запись из индекса, вам может потребоваться использовать IndexWriter удалить запись, а не FileIndex объект; например:

Вместо:

ix = open_dir('index')
ix.delete_by_term('path', u'/a/b/c')
ix.commit()

Что бросает ошибку, обсуждаемую выше, вы можете удалить файл с помощью:

ix = open_dir('index')
writer = ix.writer()
writer.delete_by_term('path', u'/a/b/c')
writer.commit()
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top