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) execute_manager (Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ)
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, Π² execute_manager
utility.execute() ΡΡΠΈΠ»ΠΈΡΠ°.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) Π²Π΅ΡΠ½ΡΡΡ ΠΊΠ»Π°ΡΡ.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(Command, self).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, Π΄ΠΎΠΊΡΠΌΠ΅Π½Ρ)
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
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 diff --git a/xapian_backend.py b/xapian_backend.py
index fbbe221..1884613 100755 ΠΈΠ½Π΄Π΅ΠΊΡ fbbe221..1884613 100755
--- a/xapian_backend.py --- a/xapian_backend.py
+++ b/xapian_backend.py +++ Π±/xapian_backend.py
@@ -259,7 +259,10 @@ class SearchBackend(BaseSearchBackend): @@ -259,7 +259,10 @@ ΠΊΠ»Π°ΡΡ 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)
) )
except UnicodeDecodeError: ΠΊΡΠΎΠΌΠ΅ UnicodeDecodeError:
sys.stderr.write('Chunk failed.n') sys.stderr.write('ΠΡΠΈΠ±ΠΊΠ° ΡΡΠ°Π³ΠΌΠ΅Π½ΡΠ°.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 ? @notanumber @jorgecarleitao Π§ΡΠΎ Π²Ρ Π΄ΡΠΌΠ°Π΅ΡΠ΅ ΠΎΠ± ΡΡΠΎΠΌ 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
Π‘Π°ΠΌΡΠΉ ΠΏΠΎΠ»Π΅Π·Π½ΡΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ
@notanumber @jorgecarleitao What do you think about this https://github.com/Alir3z4/xapian-haystack/commit/a249b46c48957f4d8a776ef41b0ce12490ad52dd ? @notanumber @jorgecarleitao Π§ΡΠΎ Π²Ρ Π΄ΡΠΌΠ°Π΅ΡΠ΅ ΠΎΠ± ΡΡΠΎΠΌ 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