我正在完成设置Djapian的教程,并尝试使用indexshell(如this step中所示)。当我运行命令'list'时,我得到以下输出:
Installed spaces/models/indexers:
- 0: 'global'
因此我无法运行任何疑问:
>>> query
No index selected
这导致我尝试:
>>> use 0
Illegal index alias '0'. See 'list' command for available aliases
我的index.py如下:
from djapian import space, Indexer, CompositeIndexer
from cms.models import Article
class ArticleIndexer(Indexer):
fields = ['body']
tags = [
('title', 'title'),
('author', 'author'),
('pub_date', 'pub_date',),
('category', 'category')
]
space.add_index(Article, ArticleIndexer, attach_as='indexer')
更新:我将djapian文件夹从site-packages移动到我的项目文件夹中,然后将index.py从项目根目录移动到djapian文件夹中。当我在indexshell中运行'list'时,现在返回以下内容:
>>> list
Installed spaces/models/indexers:
- 0: 'global'
- 0.0 'cms.Article'
-0.0.0: 'djapian.space.defaultcmsarticleindexer'
我仍然无法做任何事情,因为当我尝试选择索引时,我仍然会收到以下错误:
>>> use 0.0
Illegal index alias '0'. See 'list' command for available aliases
更新2:我的DJAPIAN_DATABASE_PATH设置出现问题,现已修复。我可以使用命令'use 0.0.0'选择一个索引器,但是当我尝试运行查询时,它会引发以下ValueError:“Empty slice”。
答案 0 :(得分:3)
你修复过ValueError:Empty Slice的问题吗?
我使用djapian教程时遇到了完全相同的问题。首先,我想知道我的数据库条目是否正确,但现在我认为它可能与实际查询Xapian安装有关?
如果我将它放在正确的目录中并且djapian知道在哪里找到它,那么看到我根本不必指向安装就会让我感到奇怪。
- 编辑 我找到了解决方案,至少对我来说。本教程不是最新的,查询命令也需要大量结果。因此,如果您使用'query mykeyword 5',您将得到5个结果,并且ValueError:Empty Slice消失。这是一个已知问题,很快就会从我读到的内容中解决。
答案 1 :(得分:0)
也许您没有加载索引?
您可以尝试在主urls.py中添加以下内容:
import djapian
djapian.load_indexes()
在对您的问题的评论中,您写道您已将index.py文件放在项目根目录中。它应该实际上位于应用程序中,沿着models.py。
还有一件事(这不太可能是你问题的原因);你在下一行有一个迷路逗号:
('pub_date', 'pub_date',),
^