如何使用elasticsearch在haystack中提升搜索结果?

时间:2014-05-15 18:30:36

标签: django search elasticsearch django-haystack

我正在使用带有haystack的elasticsearch。我希望以下列方式获得用户个人资料的搜索结果:

当您搜索" abc"你应该得到有" abc"在他们中。没有其他的。首先查看first_name和last_name,然后查看其他所有内容。因此,第一个结果将是关于那些拥有" abc"以他们的名义,然后" abc"在他们的个人资料中。

当你搜索" abc xyz"时,你应该首先得到" abc xyz" (首先是first_name,然后是last_name,然后是其他所有内容),然后是" abc"或" xyz"在他们中(首先是名字,然后是last_name,然后是其他一切)。

我认为提升会有助于实现这一目标,因此我尝试在现场级别提供提升价值如下,但它没有改变结果。

class ProfileIndex(indexes.SearchIndex, indexes.Indexable):
    text = indexes.EdgeNgramField(document=True, use_template=True)
    first_name = indexes.CharField(null=True, boost=1.5)
    last_name = indexes.CharField(null=True, boost=1.125)
    valid = indexes.CharField(default=True)
    other_fields = ....

我正在使用自动填充执行搜索。例如。

results = SearchQuerySet().models(Profile).filter(SQ(valid="yes")).autocomplete(content=search_keyword.lower())

以下是文档字段的模板:

{{ object.user.first_name }}
{{ object.user.last_name }}
{{ object.title }}
.....
.....

有人可以提出一种方法来实现上述目标吗?

感谢。

0 个答案:

没有答案