Xapian-haystack: المدى طويل جدا القضية

تم إنشاؤها على ٢٢ مايو ٢٠١١  ·  3تعليقات  ·  مصدر: notanumber/xapian-haystack

When I run manage.py rebuild_index I get following error: عند تشغيل manage.py rebuild_index لي الخطأ التالي:

```Traceback (most recent call last): `` Traceback (آخر مكالمة أخيرة):
File "./manage.py", line 11, in ملف "./manage.py" ، السطر 11 ، في
execute_manager(settings) مدير التنفيذ (الإعدادات)
File "/home/lorien/web/dumpz/.env/lib/python2.6/site-packages/django/core/management/ init .py", line 438, in execute_manager ملف "/home/lorien/web/dumpz/.env/lib/python2.6/site-packages/django/core/management/ init .py" ، السطر 438 ، in execute_manager
utility.execute() Utility.execute ()
File "/home/lorien/web/dumpz/.env/lib/python2.6/site-packages/django/core/management/ init .py", line 379, in execute ملف "/home/lorien/web/dumpz/.env/lib/python2.6/site-packages/django/core/management/ init .py" ، سطر 379 ، قيد التنفيذ
self.fetch_command(subcommand).run_from_argv(self.argv) self.fetch_command (أمر فرعي) .run_from_argv (self.argv)
File "/home/lorien/web/dumpz/.env/lib/python2.6/site-packages/django/core/management/base.py", line 191, in run_from_argv ملف "/home/lorien/web/dumpz/.env/lib/python2.6/site-packages/django/core/management/base.py" ، السطر 191 ، في run_from_argv
self.execute(_args, *_options. dict ) تنفيذ self.execute (_args، * _options. dict )
File "/home/lorien/web/dumpz/.env/lib/python2.6/site-packages/django/core/management/base.py", line 220, in execute ملف "/home/lorien/web/dumpz/.env/lib/python2.6/site-packages/django/core/management/base.py" ، السطر 220 ، قيد التنفيذ
output = self.handle(_args, *_options) الإخراج = self.handle (_args، * _options)
File "/home/lorien/web/dumpz/.env/lib/python2.6/site-packages/haystack/management/commands/rebuild_index.py", line 14, in handle ملف "/home/lorien/web/dumpz/.env/lib/python2.6/site-packages/haystack/management/commands/rebuild_index.py" ، السطر 14 ، في المقبض
call_command('update_index', *_options) call_command ('update_index'، * _options)
File "/home/lorien/web/dumpz/.env/lib/python2.6/site-packages/django/core/management/ init .py", line 166, in call_command ملف "/home/lorien/web/dumpz/.env/lib/python2.6/site-packages/django/core/management/ init .py" ، السطر 166 ، في call_command
return klass.execute(_args, *_defaults) إرجاع klass.execute (_args، * _defaults)
File "/home/lorien/web/dumpz/.env/lib/python2.6/site-packages/django/core/management/base.py", line 220, in execute ملف "/home/lorien/web/dumpz/.env/lib/python2.6/site-packages/django/core/management/base.py" ، السطر 220 ، قيد التنفيذ
output = self.handle(_args, *_options) الإخراج = self.handle (_args، * _options)
File "/home/lorien/web/dumpz/.env/lib/python2.6/site-packages/haystack/management/commands/update_index.py", line 184, in handle ملف "/home/lorien/web/dumpz/.env/lib/python2.6/site-packages/haystack/management/commands/update_index.py" ، السطر 184 ، في المقبض
return super(Command, self).handle(_apps, *_options) إرجاع super (الأمر ، النفس). handle (_apps ، * _options)
File "/home/lorien/web/dumpz/.env/lib/python2.6/site-packages/django/core/management/base.py", line 286, in handle ملف "/home/lorien/web/dumpz/.env/lib/python2.6/site-packages/django/core/management/base.py" ، السطر 286 ، في المقبض
app_output = self.handle_app(app, *_options) app_output = self.handle_app (التطبيق ، * _options)
File "/home/lorien/web/dumpz/.env/lib/python2.6/site-packages/haystack/management/commands/update_index.py", line 218, in handle_app ملف "/home/lorien/web/dumpz/.env/lib/python2.6/site-packages/haystack/management/commands/update_index.py" ، السطر 218 ، في handle_app
do_update(index, qs, start, end, total, self.verbosity) do_update (index، qs، start، end، total، self.verbosity)
File "/home/lorien/web/dumpz/.env/lib/python2.6/site-packages/haystack/management/commands/update_index.py", line 100, in do_update ملف "/home/lorien/web/dumpz/.env/lib/python2.6/site-packages/haystack/management/commands/update_index.py" ، السطر 100 ، في do_update
index.backend.update(index, current_qs) index.backend.update (الفهرس، current_qs)
File "/home/lorien/web/dumpz/.env/lib/python2.6/site-packages/xapian_backend.py", line 257, in update ملف "/home/lorien/web/dumpz/.env/lib/python2.6/site-packages/xapian_backend.py" ، السطر 257 ، قيد التحديث
database.replace_document(document_id, document) database.replace_document (document_id، document)
xapian.InvalidArgumentError: Term too long (> 245): 4f6d6e6961206d6561206d6563756d20706f72746f202d20e2f1e520f1e2eee520edeef8f320f120f1eee1eefe0d0a566974612073696e65206c69626572746174652c206e6968696c202d20e6e8e7edfc20e1e5e720f1e2eee1eee4fb202d20ede8f7f2ee0d0a417273206c6f6e67612c207669746120627265766973 xapian.InvalidArgumentError: Term too long (> 245): 4f6d6e6961206d6561206d6563756d20706f72746f202d20e2f1e520f1e2eee520edeef8f320f120f1eee1eefe0d0a566974612073696e65206c69626572746174652c206e6968696c202d20e6e8e7edfc20e1e5e720f1e2eee1eee4fb202d20ede8f7f2ee0d0a417273206c6f6e67612c207669746120627265766973

Do you have any idea how to handle this problem?

Thanks.

P.S.
python 2.6
python-xapian (debian) 1.2.4-1
libxapian (debian) 1.2.5
recent versions of django, haystack-xapian, django-xapian
en

التعليق الأكثر فائدة

@notanumber @jorgecarleitao What do you think about this https://github.com/Alir3z4/xapian-haystack/commit/a249b46c48957f4d8a776ef41b0ce12490ad52dd ? notanumberjorgecarleitao ما رأيك في هذا https://github.com/Alir3z4/xapian-haystack/commit/a249b46c48957f4d8a776ef41b0ce12490ad52dd ؟

the text document is usually more than 245, I know it's raised from xapian itself but this shouldn't break the [re]building the index. عادة ما يكون المستند النصي أكثر من 245 ، أعلم أنه تم رفعه من xapian نفسه ولكن هذا لا ينبغي أن يكسر [إعادة] بناء الفهرس.

en

ال 3 كومينتر

I've created quick fix, it just ignores such error and I think documents with invalid terms are not added to index completely. لقد قمت بإنشاء إصلاح سريع ، إنه يتجاهل مثل هذا الخطأ وأعتقد أن المستندات ذات المصطلحات غير الصالحة لا تتم إضافتها إلى الفهرسة تمامًا.

``` lorien@big :/tmp/xapian-haystack$ git diff "" lorien @ big : / tmp / xapian-haystack $ git diff
diff --git a/xapian_backend.py b/xapian_backend.py فرق --git a / xapian_backend.py b / xapian_backend.py
index fbbe221..1884613 100755 الفهرس fbbe221..1884613 100755
--- a/xapian_backend.py --- أ / xapian_backend.py
+++ b/xapian_backend.py +++ ب / xapian_backend.py
@@ -259,7 +259,10 @@ class SearchBackend(BaseSearchBackend): -259،7 +259،10class SearchBackend (BaseSearchBackend):
DOCUMENT_CT_TERM_PREFIX + u'%s.%s' % DOCUMENT_CT_TERM_PREFIX + u '٪ s.٪ s'٪
(obj._meta.app_label, obj._meta.module_name) (obj._meta.app_label، obj._meta.module_name)
) )

  • database.replace_document(document_id, document) database.replace_document (document_id، document)
  • try: محاولة:
  • database.replace_document(document_id, document) database.replace_document (document_id، document)
  • except xapian.InvalidArgumentError, ex: باستثناء xapian.InvalidArgumentError ، على سبيل المثال:
  • ``` ""
    sys.stderr.write('xapian.InvalidArgumentErrorn') sys.stderr.write ('xapian.InvalidArgumentErrorn')

except UnicodeDecodeError: باستثناء UnicodeDecodeError:
sys.stderr.write('Chunk failed.n') sys.stderr.write ('Chunk failure.n')
``` ""


en

This is actually raised by Xapian itself. تم رفع هذا في الواقع بواسطة Xapian نفسه. I've left the exception to bubble up so it's possible for a developer to see the issue. لقد تركت الاستثناء حتى يظهر فقاعات بحيث يمكن للمطور رؤية المشكلة. The solution is to ensure your terms are no longer than 245 characters, unfortunately. الحل هو التأكد من أن شروطك لا تزيد عن 245 حرفًا ، للأسف.

en

@notanumber @jorgecarleitao What do you think about this https://github.com/Alir3z4/xapian-haystack/commit/a249b46c48957f4d8a776ef41b0ce12490ad52dd ? notanumberjorgecarleitao ما رأيك في هذا https://github.com/Alir3z4/xapian-haystack/commit/a249b46c48957f4d8a776ef41b0ce12490ad52dd ؟

the text document is usually more than 245, I know it's raised from xapian itself but this shouldn't break the [re]building the index. عادة ما يكون المستند النصي أكثر من 245 ، أعلم أنه تم رفعه من xapian نفسه ولكن هذا لا ينبغي أن يكسر [إعادة] بناء الفهرس.

en
هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات