6

DjangoHaystack1.2.5でいくつか問題があります。1つのフィールドをブーストする必要がありますが、どうやらそれは機能していません。Solr1.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」フィールド。Haystackブーストはこれを達成するための適切なツールですか?

4

2 に答える 2

7

フィールド定義で指定boost=1.5することは、その特定のフィールドで「フィールドブースト」を使用するようにHaystackに指示する方法です。Haystackのドキュメントから:

ブーストには次の3つのタイプがあります。

  • タームブースト

  • ドキュメントブースト

  • フィールドブースト

用語のブーストは、クエリ時(検索クエリの実行時)に発生し、特定の単語/フレーズが表示されるスコアの増加に基づいています。

一方、ドキュメントとフィールドのブーストは、インデックス作成時 (ドキュメントがインデックスに追加されているとき)に行われます。ドキュメントブーストを使用すると、結果全体の関連性が高まります。フィールドブーストを使用すると、そのフィールド内の検索のみが向上します。

コードでフィールドブーストを指定しました。これにより、クエリを実行するときではなく、モデルのインデックスが作成されたときにフィールドがブーストされます。幸いなことに、指定したブーストは、そのフィールドで検索が行われたときにも使用されますが、Solrへのクエリで明示的に指定されるのではなく、暗黙的に適用されます。

どのフィールドも検索していないので、指定したクエリにブーストが適用されるとは思いません。

于 2011-12-04T10:11:21.170 に答える
0

同じ問題が発生しました。モデルに「boost」パラメーターを設定した後、「schema.xml」は変更されていません。解決策として、DisMaxクエリモードの使用を開始しました。このようなものが私のために働いています:

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

これが誰かに役立つことを願っています。

于 2013-08-27T20:23:18.380 に答える