поиск на основе djapian не дал результата - PullRequest
0 голосов
/ 28 июня 2009

Я пытаюсь реализовать полнотекстовый поиск на основе djapian для поиска пользователя. профили на моем сайте Django. Я в основном выполнил следующие шаги, чтобы построить индексы:

  • Обновлен профиль модели для добавления индексатора djapian.
  • Выполнено python manage.py index --rebuild для перестроения индексов.

Однако, когда я пытаюсь выполнить поиск, используя индексатор профиля, используя:
Profile.indexer.search("query")
это не дает мне никаких результатов. Я не получаю никаких ошибок.

Может кто-то помочь мне с этим? Я новичок с.р.т. Джанго + djapian.

--- Обновление от 29.06.09
Мое определение индексатора находится в models.py и выглядит следующим образом:


class Profile(models.Model):
        user = models.ForeignKey(User, unique=True, verbose_name=<em>('user'))
        name = models.CharField(</em>('name'), max_length=50, null=True, blank=True)
        about = models.TextField(<em>('about'), null=True, blank=True)
        institution = models.CharField(</em>('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 <strong>unicode</strong>(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')</p>

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

<pre><code>djapian.add_index(Profile,ProfileIndexer,attach_as = 'indexer')

1 Ответ

1 голос
/ 04 июля 2009

Возможно, все, что вам не хватает, работает

Profile.indexer.update()

в конце файла models.py (вам нужно сделать это только один раз).

Теперь я могу использовать более старую версию Djapian, чем вы, но мне кажется, что мне подходит следующее (end of models.py):

profile_indexer = djapian.Indexer(
    model=Profile,
    fields=[..., ...],
    tags=[(..., ...), (..., ...)]
)
# Run once and then comment out.
Profile.indexer.update()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...