首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >实现数据库搜索

实现数据库搜索
EN

Stack Overflow用户
提问于 2012-06-13 22:08:47
回答 1查看 167关注 0票数 0

目前我有一个课程数据库,它有6列:

代码语言:javascript
复制
class Course(models.Model):
    title = models.CharField(max_length=50)
    number = models.CharField(max_length=12)
    Cat1 = models.BooleanField()
    Cat2 = models.BooleanField()
    Cat3 = models.BooleanField()
    department = models.ForeignKey(Department)

本课程的unicode方法输出如下所示:

代码语言:javascript
复制
def __unicode__(self):
        return u'%s %s %s %s %s %s' % (self.department, self.number, self.title, 'CAT1' if self.Cat1 else '','Cat2' if self.Cat2 else '','Cat3' if self.Cat3 else '')

返回如下内容: ENG 1104学术写作Cat1 Cat3

我正在尝试实现一个通过文本查询来查找课程的搜索,所以我尝试了Haystack (以呼呼为引擎),但为了更容易建立索引,我刚刚在名为text的模型中添加了一个新列,我只是在其中添加了每个课程的Unicode文本。这种方法工作得很好,但显然它并不健壮,而且由于这只是我的一个小项目,用于学习目的,我想知道更有效的方法来完成这个搜索。有什么想法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-06-13 23:06:09

Haystack不需要对您的模型进行任何更改。推荐的方法是使用模板:

代码语言:javascript
复制
class CourseIndex(indexes.SearchIndex, indexes.Indexable):
    text = indexes.CharField(document=True, use_template=True)
    ...

然后,创建一个以templates/search/indexes/[app]/[model]_[indexfield].txt格式命名的文件。因此,在本例中,它将是templates/search/indexes/yourapp/course_text.txt。然后,使用标准的Django模板标记等来创建模型的纯文本表示:

代码语言:javascript
复制
{{ object.title }}
{{ object.number }}
{{ object.department.name }}

根据需要添加任意数量的信息。如果您有任何包含超文本标记语言的富文本字段,请记住使用striptags,这样您的索引中就不会出现垃圾。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11016684

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档