基于djapian的搜索没有返回结果

时间:2009-06-28 05:22:34

标签: django

我正在尝试为搜索用户实现基于djapian的全文搜索 我的django网站中的个人资料。我基本上按照以下步骤来构建 索引:

  • 更新了模型配置文件以添加djapian索引器。
  • python manage.py index --rebuild重建索引。

但是当我尝试使用Profile indexer进行搜索时:
Profile.indexer.search("query")
它没有给我任何结果。我没有收到任何错误。

有人可以帮我弄这个吗?我是新手w.r.t. Django的+ djapian。

---更新06/29/09
我的索引器定义位于models.py中,如下所示:


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

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

1 个答案:

答案 0 :(得分:1)

你可能缺少的是

Profile.indexer.update()

在models.py的末尾(你只需要这样做一次)。

现在,我可能使用的是旧版本的Djapian,但以下内容似乎适用于我(models.py的结尾):

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