【问题标题】:Django haystack: Boosting search results if the searchterm appears in a specific fieldDjango haystack:如果搜索词出现在特定字段中,则提升搜索结果
【发布时间】:2011-12-26 22:52:22
【问题描述】:

我正在使用 django-haystack 在我的网站上进行搜索。 我的问题是,如果在特定字段中找到搜索词,我希望将搜索结果放在首位。 假设我搜索博客条目,然后我想在标题字段中找到搜索词的顶部显示这些结果。

我阅读了有关场增强的 haystack 文档,但我不明白它应该如何工作。

【问题讨论】:

    标签: django search django-haystack


    【解决方案1】:

    您可以:

    修改您的搜索索引文件,例如

    class BlogEntryIndex(SearchIndex):
        text = CharField(document=True, use_template=True)
        title = CharField(model_attr='title', boost=1.125)
    

    注意:正如 cmets 中所指出的,下面只会提升术语标题而不是字段,请使用上面的。

    或者您可以将提升传递给您的 SearchQuerySet,例如在您的 haystack urls 文件中。

    sqs = SearchQuerySet().boost('title', 1.125)
    
    urlpatterns = patterns('haystack.views',
        url(r'^$', SearchView(searchqueryset=sqs), name='haystack_search'),
    )
    

    【讨论】:

    • 再次您好,感谢您的快速回复!我从文档中知道这两个变体,第一个变体看起来很有趣,但我是否必须做其他事情才能使其工作?我已经尝试过了,但它似乎什么都没有改变......第二个变体对我没有多大帮助,因为它只会提升搜索词而不是字段,至少我是这样理解的。
    • 您使用的是哪个搜索后端?
    • 奇怪我有类似的设置,似乎工作正常,你是否将 order_by 设置为'score'?虽然我认为这可能是默认值??
    • 试过了,但这也不是问题...感谢您的不懈帮助!
    • @JamesO: SearchQuerySet().boost('title', 1.5) 在搜索 term 'title' 时不会执行提升...而不是字段“标题”?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多