Django + Haystack + Whoosh,生产中没有结果
Django + Haystack + Whoosh, no results in production
我正在构建一个 Django 应用程序,使用 Haystack+Whoosh 进行搜索。在开发环境中,搜索按预期工作。但是,在生产中,搜索始终 return 没有结果。
发展:
$> python manage.py rebuild_index
...
All documents removed.
Indexing 8 categories
Indexing 4 documents
$> python manage.py shell
...
>>> from haystack.query import SearchQuerySet
>>> SearchQuerySet().all().count()
12
制作:
$> dokku run proj python manage.py rebuild_index -v2
...
All documents removed.
Skipping '<class 'django.contrib.admin.models.LogEntry'>' - no index.
...
Skipping '<class 'django.contrib.sessions.models.Session'>' - no index.
Indexing 7 categories
indexed 1 - 7 of 7 (worker PID: 8).
Indexing 13 documents
indexed 1 - 13 of 13 (worker PID: 8).
[INFO/MainProcess] process shutting down
$> dokku run proj python manage.py shell
...
>>> from haystack.query import SearchQuerySet
>>> SearchQuerySet().all().count()
0
>>> from django.conf import settings
>>> settings.HAYSTACK_CONNECTIONS['default']['PATH']
'/app/whoosh/index'
$> dokku run proj ls -la /app/whoosh
total 8
drwxr-xr-x 2 herokuishuser herokuishuser 4096 Nov 21 16:44 .
drwxr-xr-x 21 herokuishuser herokuishuser 4096 Nov 22 17:42 ..
-rw-r--r-- 1 herokuishuser herokuishuser 0 Nov 21 16:43 .gitkeep
Files/settings:
# requirements.txt
Django==1.10.3
django-haystack==2.5.1
gunicorn==19.6.0
psycopg2==2.6.2
whitenoise==3.2.2
Whoosh==2.7.4
...
# runtime.txt
python-3.5.2
# proj/settings.py
...
HAYSTACK_CONNECTIONS = {
'default': {
'ENGINE': 'haystack.backends.whoosh_backend.WhooshEngine',
'PATH': os.path.join(BASE_DIR, 'whoosh', 'index'),
},
}
...
关于查找问题的任何指导?
可能是权限问题。
您可以 运行 在详细模式下,您可能会从中获得见解:
dokku run proj python manage.py rebuild_index -v2
你的设置里有什么?你应该有这样的东西:
HAYSTACK_CONNECTIONS = {
'default': {
'ENGINE': 'haystack.backends.whoosh_backend.WhooshEngine',
'PATH': os.path.join(self.BASE, '_whoosh', 'whoosh_index'),
},
}
打印出来settings.HAYSTACK_CONNECTIONS['default']['PATH']
。确保它不在临时文件夹中并且可以访问 (ls -la ...
)。
首先确保授予正确的权限:
sudo chown :www-data YourDjangoProject/
sudo chmod 775 YourDjangoProject/
最后:
sudo chown :www-data YourDjangoProject/YourDjangoProject/whoosh_index/
我正在构建一个 Django 应用程序,使用 Haystack+Whoosh 进行搜索。在开发环境中,搜索按预期工作。但是,在生产中,搜索始终 return 没有结果。
发展:
$> python manage.py rebuild_index
...
All documents removed.
Indexing 8 categories
Indexing 4 documents
$> python manage.py shell
...
>>> from haystack.query import SearchQuerySet
>>> SearchQuerySet().all().count()
12
制作:
$> dokku run proj python manage.py rebuild_index -v2
...
All documents removed.
Skipping '<class 'django.contrib.admin.models.LogEntry'>' - no index.
...
Skipping '<class 'django.contrib.sessions.models.Session'>' - no index.
Indexing 7 categories
indexed 1 - 7 of 7 (worker PID: 8).
Indexing 13 documents
indexed 1 - 13 of 13 (worker PID: 8).
[INFO/MainProcess] process shutting down
$> dokku run proj python manage.py shell
...
>>> from haystack.query import SearchQuerySet
>>> SearchQuerySet().all().count()
0
>>> from django.conf import settings
>>> settings.HAYSTACK_CONNECTIONS['default']['PATH']
'/app/whoosh/index'
$> dokku run proj ls -la /app/whoosh
total 8
drwxr-xr-x 2 herokuishuser herokuishuser 4096 Nov 21 16:44 .
drwxr-xr-x 21 herokuishuser herokuishuser 4096 Nov 22 17:42 ..
-rw-r--r-- 1 herokuishuser herokuishuser 0 Nov 21 16:43 .gitkeep
Files/settings:
# requirements.txt
Django==1.10.3
django-haystack==2.5.1
gunicorn==19.6.0
psycopg2==2.6.2
whitenoise==3.2.2
Whoosh==2.7.4
...
# runtime.txt
python-3.5.2
# proj/settings.py
...
HAYSTACK_CONNECTIONS = {
'default': {
'ENGINE': 'haystack.backends.whoosh_backend.WhooshEngine',
'PATH': os.path.join(BASE_DIR, 'whoosh', 'index'),
},
}
...
关于查找问题的任何指导?
可能是权限问题。
您可以 运行 在详细模式下,您可能会从中获得见解:
dokku run proj python manage.py rebuild_index -v2
你的设置里有什么?你应该有这样的东西:
HAYSTACK_CONNECTIONS = {
'default': {
'ENGINE': 'haystack.backends.whoosh_backend.WhooshEngine',
'PATH': os.path.join(self.BASE, '_whoosh', 'whoosh_index'),
},
}
打印出来settings.HAYSTACK_CONNECTIONS['default']['PATH']
。确保它不在临时文件夹中并且可以访问 (ls -la ...
)。
首先确保授予正确的权限:
sudo chown :www-data YourDjangoProject/
sudo chmod 775 YourDjangoProject/
最后:
sudo chown :www-data YourDjangoProject/YourDjangoProject/whoosh_index/