没有由Djapian为Django创建的索引器

时间:2009-10-28 17:24:34

标签: django xapian

我正在完成设置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”。

2 个答案:

答案 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',),
                       ^