2009-06-28 13 views
0

Ich versuche eine djapian basierte Volltextsuche für die Suche nach Benutzer Profile in meiner Django-Site zu implementieren. Ich folgte im Wesentlichen die folgenden Schritte, um die Indizes zu erstellen:djapian basierte Suche gibt kein Ergebnis zurück

  • das Modell Profil der djapian Indexer hinzuzufügen aktualisiert.
  • Lief python manage.py index --rebuild, um die Indizes neu zu erstellen.

aber wenn ich versuche, mit mit dem Profil Indexer suchen:
Profile.indexer.search("query")
es mir nicht gibt keine Ergebnisse. Ich erhalte keine Fehler.

Kann mir jemand dabei helfen? Ich bin ein Neuling w.r.t. django + djapian.

--- aktualisieren 06/29/09
Meine Indexer Definition lebt in models.py und ist wie folgt:


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

Es ist möglich,

+0

Bitte geben Sie Ihre Indexer Definition zu uns und sagen, wo lebt es in Code. –

+0

Danke für die Antwort Alex. Ich habe meinen Beitrag aktualisiert, um Ihre Frage zu beantworten. – kartikq

Antwort

1

, dass alles, was Sie

laufen
Profile.indexer.update() 
wird fehlen

am Ende von models.py (Sie müssen dies nur einmal tun).

Nun könnte ich eine ältere Version von Djapian als Sie verwenden aber die folgende scheinen für mich (Ende models.py) zu arbeiten:

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

lemonad, yup das hat funktioniert. Ich dachte, der Index --rebuild hätte die Indizes neu aufbauen sollen. Vielen Dank! – kartikq

Verwandte Themen