【发布时间】:2012-01-12 04:14:06
【问题描述】:
我在 Django Haystack 1.2.5 中遇到了一些问题。我需要提升一个领域,但显然它不起作用。我正在使用 Solr 1.4.1。
我的索引:
class JobsTextIndex(indexes.SearchIndex):
text = indexes.CharField(document=True, use_template=True)
job_title = indexes.CharField(model_attr='job_title', boost=1.50)
job_description = indexes.CharField(model_attr='job_description')
country_ad = indexes.CharField(model_attr='country_ad')
zone_ad = indexes.CharField(model_attr='zone_ad', faceted=True)
location_ad = indexes.CharField(model_attr='location_ad', faceted=True)
date_inserted = indexes.DateTimeField(model_attr='date_inserted')
def index_queryset(self):
"""Used when the entire index for model is updated."""
return JobsadsText.objects.filter(date_inserted__lte=datetime.datetime.now())
我在 job_title 中有“boost=1.50”,但这显然不起作用,这是 Solr 生成的:
INFO: [core0] webapp=/solr path=/select/ params={facet=on&sort=date_inserted+desc&fl=*+score&start=0&q=arquiteto&facet.field=location_ad_exact&facet.field=zone_ad_exact&wt=json&fq=django_ct:(myapp.jobstext)&rows=20} hits=65 status=0 QTime=5
我正在做的查询是这个:
sqs = SearchQuerySet().facet('zone_ad').facet('location_ad').order_by('-date_inserted')
谁能告诉我我需要什么才能让 Haystack Boost 工作?
最好的问候,
更新 1:我需要更加重视“job_title”字段。例如,如果我正在搜索“programmer”这个词,我需要首先显示“job_title”字段中按日期排序的“programmer”的结果,然后显示“programmer”这个词的结果“job_description”字段。 Haystack boost 是实现这一目标的正确工具吗?
【问题讨论】:
-
我遇到了完全相同的问题:我想提升一个字段,但提升参数没有做任何事情。在查询集上调用 .boost() 方法只会给出非常不可预测的结果。你找到解决办法了吗?
-
@mixedCase,我还没有增强功能。在我的情况下,我唯一的选择是使用“dismax”Solr 功能进行原始查询,但我没有时间阅读有关 Solr 的更多信息......
标签: django solr django-haystack solr-boost