Вопрос

Я с некоторыми проблемами в Джанго Хэт -Устече 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". Если, например, я ищу слово «программист», мне нужно в первую очередь показать результаты, в которых есть «программист» в поле «job_title», заказанную датой, а затем результаты, на которых есть слово «программист» в Поле "job_description". Ускорение сена - это правильный инструмент для достижения этого?

Это было полезно?

Решение

Указание boost=1.5 В определении вашей области вы говорите, что Haystack использует «Boost» в этом конкретном поле. Из документации с сенами:

Есть три типа повышения:

  • Срок повышения

  • Документ повышение

  • Полевой повышение

Убийство термина происходит во время запроса (когда запускается поисковый запрос) и основан на увеличении счета, является определенным словом/фразой.

С другой стороны, повышение документов и поля происходят во время индексации(Когда документ добавляется в индекс). Boost Document приводит к повышению актуальности всего результата, когда повышение поля вызывает только поиски в этом поле, чтобы добиться большего успеха.

Вы указали повышение поля в своем коде, что увеличит поле, когда модель индексируется, а не при выдвижении вашего запроса. Хорошей новостью является то, что указанный вами повышение все еще будет использоваться при поиске в этом поле, но будет применяться неявно, а не указано явно в запросе на Solr.

Я не думаю, что указанный вами запрос будет применен к нему повышение, хотя, поскольку вы не искали ни на каких полях.

Другие советы

У меня была та же проблема - «Schema.xml» не изменилась после того, как у меня был параметр «Boost» в модели. В качестве решения я начал использовать режим запроса Dimax. Что -то подобное работает для меня:

SearchQuerySet().filter(text=Raw("{!dismax qf='field1^3 field2^2 text'}" + query))

Я надеюсь, что это кому -то поможет.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top