1

複数のフィールドで設定された solr 検索エンジンがあり、すべてのフィールドを検索できるようにしたいと考えています。

私はできますが.filter(content='string')、これはフィールドにあるものだけを検索しますdocument=True

編集 また、一部の非document=Trueフィールドには異なるフィルター/トークナイザーが適用されているため、それらを単一のフィールドに追加しても機能しないと推測しています...

4

3 に答える 3

2

「use_template」で 2 番目のフィールドを作成し、すべてのフィールドを表示するテンプレートを作成できます。

私はこれをやろうとしたことはありませんが、これは私には良い方法に思えます。

OPコメント以降の編集:

それから私の最善の策は、メソッドを追加するか、SearchIndex 内のすべてのフィールドをループして次のようなことを行う関数を作成するサブクラス SearchQueryset のいずれかです。

qs = SearchQuerySet().filter(content=query)
for field in fieldlist:
   qs = qs.filter_or(**{'field':query})

これがまったく機能するかどうかはわかりませんが、試してみる価値はあります。

于 2011-06-16T09:41:10.303 に答える
1

@neolaser:DisMax検索を使用することであなたが望むことを達成できると思います。複数のフィールドを検索し、各フィールドのブースト値を指定できます。詳細については:

http://wiki.apache.org/solr/SolrRelevancyFAQ

http://wiki.apache.org/solr/DisMaxQParserPlugin

于 2011-09-13T04:23:38.323 に答える
1

すべてのフィールドを検索して、それらすべてをフィルター クエリパラメーターに含めるか、クエリ文字列で名前を付けて検索できます (たとえば、「キーワード」を検索する必要がある場合は、「((field_1:keyword) OR (field_2:keyword) OR) を検索します。 (field_3: キーワード))" 代わりに)。

ただし、通常は、この 1 つのフィールドを検索して検索するために必要な他のすべてのフィールドを連結する専用のフィールドを用意することをお勧めします。スキーマにcopyfieldを設定して、ドキュメントのインデックス作成時にコンテンツが自動的に生成されるようにすることができます。

于 2011-06-16T09:36:57.840 に答える