2009-06-28 5 views
0

J'essaie de mettre en œuvre une recherche de texte intégral djapian pour la recherche de profils utilisateur dans mon site django. Je essentiellement suivi les étapes suivantes pour construire les indices :djapian base de recherche ne renvoie aucun résultat

  • Mis à jour le profil de modèle pour ajouter le indexeur djapian.
  • Ran python manage.py index --rebuild pour reconstruire les index.

Cependant lorsque je tente de recherche à l'aide du profil indexeur en utilisant:
Profile.indexer.search("query")
il ne me donne pas de résultats. Je ne reçois aucune erreur.

Quelqu'un peut-il m'aider avec ceci? Je suis un débutant w.r.t. django + djapian.

--- Mise à jour 29/06/09
Ma définition indexeur vit dans models.py et est comme suit:


class Profile(models.Model): 
     user = models.ForeignKey(User, unique=True, verbose_name=('user')) name = models.CharField(('name'), max_length=50, null=True, blank=True) 
     about = models.TextField(('about'), null=True, blank=True) institution = models.CharField(('institution'),max_length=100,null=True, blank=True) 
     location = models.CharField(_('location'), max_length=40, null=True, blank=True) 
     website = models.URLField(_('website'), null=True, blank=True, verify_exists=False) 
     def unicode(self): 
      return self.user.username 
     def get_absolute_url(self): 
      return ('profile_detail', None, {'username': self.user.username}) 
     get_absolute_url = models.permalink(get_absolute_url) 
     class Meta: 
      verbose_name = _('profile') 
      verbose_name_plural = _('profiles')

class ProfileIndexer(djapian.Indexer): fields = ['name', 'about', 'institution','location'] tags = [ ('name','name'),('about','about'),('institution','institution'),('location','location')]

djapian.add_index(Profile,ProfileIndexer,attach_as = 'indexer') 

+0

S'il vous plaît, donnez-nous votre définition indexeur et dire où vit-il dans le code? –

+0

Merci pour la réponse Alex. J'ai mis à jour mon message pour répondre à votre question. – kartikq

Répondre

1

Il est possible que tout ce que vous manquez est en cours d'exécution

Profile.indexer.update() 

à la fin de models.py (il vous suffit de le faire une fois).

Maintenant, je pourrais être en utilisant une ancienne version de Djapian que vous, mais les éléments suivants semblent travailler pour moi (fin de models.py):

profile_indexer = djapian.Indexer(
    model=Profile, 
    fields=[..., ...], 
    tags=[(..., ...), (..., ...)] 
) 
# Run once and then comment out. 
Profile.indexer.update() 
+1

lemonad, yup qui a fonctionné. Je pensais que l'index --rebuild aurait dû reconstruire les index. Merci beaucoup! – kartikq

Questions connexes