0

我正在完成设置 Djapian 的教程,并尝试使用 indexshell(如本步骤所示)。当我运行命令“列表”时,我得到以下输出:

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
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 设置有问题,现在已修复。我可以使用命令“使用 0.0.0”选择索引器,但是当我尝试运行查询时,它会引发以下 ValueError:“空切片”。

4

2 回答 2

3

您是否解决了 ValueError: Empty Slice 的问题?

我在使用 djapian 教程时遇到了完全相同的问题。首先我想知道我的数据库条目是否正确,但现在我想这可能与 Xapian 安装的实际查询有关?

看到我根本不需要指向安装,我想知道我是否将它放在正确的目录中,以及 djapian 是否知道在哪里可以找到它。

- 编辑我找到了解决方案,至少对我来说。本教程不是最新的,查询命令也需要一些结果。因此,如果您使用“查询 mykeyword 5”,您将获得 5 个结果并且 ValueError: Empty Slice 消失。这是一个已知问题,很快就会从我阅读的内容中得到解决。

于 2009-11-03T08:44:10.050 回答
0

也许您没有加载索引?

您可以尝试将以下内容放在主 urls.py 中:

import djapian
djapian.load_indexes()

在对您的问题的评论中,您写道您已将 index.py 文件放在项目根目录中。它实际上应该与 models.py 一起驻留在应用程序中。

还有一件事(这不太可能是您的问题的原因);您在以下行中有一个杂散的逗号:

('pub_date', 'pub_date',),
                       ^
于 2009-10-28T21:45:51.113 回答