TLDR;
django、django-haystack、solrではさまざまなブースティングタイプがどのように連携しますか?
最も明白な検索結果を最初に表示するのに問題があります。10件の結果を検索しcaring for others
て取得すると、タイトルの付いたオブジェクトがcaring for others
結果の2番目に表示されcaring for yourself
ます。
ドキュメントブースト
ルートノードの場合は1.9、第2レベルの場合は1.8、第3レベルの場合は1.7など、ブーストされCategory
たオブジェクトをドキュメント化しました。factor = 2.0 - ((the mptt tree level)/10)
(または190%、180%、170%...など)
フィールドブースト
タイトルはboost=1.5
150%の正の係数でブーストされますコンテンツはboost=.5
50%の負の係数でブーストされます
タームブースト
現在、検索用語を増やしていません。
私の目標
結果のカテゴリと記事のリストを取得したい(カテゴリの結果をまっすぐに取得するまで、記事を無視します)。カテゴリは記事よりも重みが高く、タイトルはコンテンツよりも重みが高くなっています。また、ルートカテゴリノードを子ノードよりも高く重み付けしようとしています。
どこかで重要なコンセプトが欠けているような気がします。
情報
haystackの組み込みの検索フォームと検索ビューを使用しています。
次のpackage/libバージョンを使用しています。
Django==1.4.1
django-haystack==1.2.7
pysolr==2.1.0-beta
マイインデックスクラス
class CategoryIndex(SearchIndex):
"""Categorization -> Category"""
text = CharField(document=True, use_template=True, boost=.5)
title = CharField(model_attr='title', boost=1.5)
content = CharField(model_attr='content', boost=.5)
autocomplete = EdgeNgramField(model_attr='title')
def prepare_title(self, object):
return object.title
def prepare(self, obj):
data = super(CategoryIndex, self).prepare(obj)
base_boost = 2.0
base_boost -= (float(int(obj.level))/10)
data['boost'] = base_boost
return data
私の検索テンプレートtemplates/search/categorization/category_text.txt
{{ object.title }}
{{ object.content }}
アップデート
{{ object.content }}
検索テンプレートを削除すると、そのレコードが期待どおりの順序で表示され始めたことに気づきました。どうしてこれなの?