No indexers created by Djapian for Django

429 views Asked by At

I am working through the tutorial for setting up Djapian and am trying to use the indexshell (as demonstrated in this step). When I run the command 'list' I get the following output:

Installed spaces/models/indexers:
- 0: 'global'

I therefore cannot run any queries:

>>> query
No index selected

Which leads me to attempt:

>>> use 0
Illegal index alias '0'. See 'list' command for available aliases

My index.py is as follows:

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')

Update: I moved the djapian folder from site-packages to within my project folder and I move index.py from the project root to within the djapian folder. When I run 'list' in the indexshell the following is now returned:

>>> list
Installed spaces/models/indexers:
- 0: 'global'
    - 0.0 'cms.Article'
        -0.0.0: 'djapian.space.defaultcmsarticleindexer'

I still cannot do anything though as when I try to select an index I still get the following error:

>>> use 0.0
Illegal index alias '0'. See 'list' command for available aliases

Update 2: I had a problem with my setting for DJAPIAN_DATABASE_PATH which is now fixed. I can select an indexer using the command 'use 0.0.0' but when I try to run a query it raises the following ValueError: "Empty slice".

2

There are 2 answers

0
Kay On BEST ANSWER

Have you fixed the problem of the ValueError: Empty Slice?

I'm having the exact same problem using the djapian tutorial. First I was wondering if my database entries were right, but now I'm thinking it might have something to do with the actual querying of the Xapian install?

Seeing that I haven't had to point to the install at all wonders me if I placed it in the right directory and if djapian knows where to find it.

-- Edit I've found the solution, atleast for me. The tutorial is not up to date and the query command expects a number of results too. So if you use 'query mykeyword 5' you get 5 results and the ValueError: Empty Slice disappears. It's a known issue and it will be fixed soon from what I read.

1
lemonad On

Perhaps you're not loading indexes?

You could try placing the following in your main urls.py:

import djapian
djapian.load_indexes()

In a comment to your question you write that you've placed index.py file in the project root. It should actually reside within an app, along models.py.

One more thing (which is very unlikely to be the cause of your problems); you've got a stray comma on the following line:

('pub_date', 'pub_date',),
                       ^