複数のフィールドで設定された solr 検索エンジンがあり、すべてのフィールドを検索できるようにしたいと考えています。
私はできますが.filter(content='string')
、これはフィールドにあるものだけを検索しますdocument=True
編集
また、一部の非document=True
フィールドには異なるフィルター/トークナイザーが適用されているため、それらを単一のフィールドに追加しても機能しないと推測しています...
複数のフィールドで設定された solr 検索エンジンがあり、すべてのフィールドを検索できるようにしたいと考えています。
私はできますが.filter(content='string')
、これはフィールドにあるものだけを検索しますdocument=True
編集
また、一部の非document=True
フィールドには異なるフィルター/トークナイザーが適用されているため、それらを単一のフィールドに追加しても機能しないと推測しています...
「use_template」で 2 番目のフィールドを作成し、すべてのフィールドを表示するテンプレートを作成できます。
私はこれをやろうとしたことはありませんが、これは私には良い方法に思えます。
OPコメント以降の編集:
それから私の最善の策は、メソッドを追加するか、SearchIndex 内のすべてのフィールドをループして次のようなことを行う関数を作成するサブクラス SearchQueryset のいずれかです。
qs = SearchQuerySet().filter(content=query)
for field in fieldlist:
qs = qs.filter_or(**{'field':query})
これがまったく機能するかどうかはわかりませんが、試してみる価値はあります。
@neolaser:DisMax検索を使用することであなたが望むことを達成できると思います。複数のフィールドを検索し、各フィールドのブースト値を指定できます。詳細については:
すべてのフィールドを検索して、それらすべてをフィルター クエリパラメーターに含めるか、クエリ文字列で名前を付けて検索できます (たとえば、「キーワード」を検索する必要がある場合は、「((field_1:keyword) OR (field_2:keyword) OR) を検索します。 (field_3: キーワード))" 代わりに)。
ただし、通常は、この 1 つのフィールドを検索して検索するために必要な他のすべてのフィールドを連結する専用のフィールドを用意することをお勧めします。スキーマにcopyfieldを設定して、ドキュメントのインデックス作成時にコンテンツが自動的に生成されるようにすることができます。