0

このアイテムに関連する国を表すために、solr DB に国フィールドがあります。国のリストはパイプで区切られています
ex:
<arr name="country"> <str>France | United Kingdom | Norway | UAE </str> </arr> そして今のような別のアイテム
<arr name="country"> <str>Australia | Belgium | Argentina </str> </arr>
私はイギリスまたはベルギーに関連するすべてのアイテムを検索する必要があります 私はこれを試しました

http://127.0.0.1:8888/solr/MyDb/select/?q=*:*&version=2.2&start=0&rows=10&indent=on&facet=true&fq=country:United+Kingdom+OR+ベルギー

しかし、これはうまくいきませんでした!この検索方法を教えてください。
ご協力いただきありがとうございます

4

2 に答える 2

1

国フィールド @ index とクエリ時間で実行された分析は何ですか?

提案します-

| で区切るのではなく、国と複数値にインデックスを付けます。最小限の分析で fieldType を使用するか、フィルタリングにフィールド タイプ文字列を使用します

<field name="country" type="string" indexed="true" stored="true" multiValued="true"/>

フィルタ クエリを使用する必要があります

fq=country:Norway
fq=country:("United Kingdom" OR Belgium)
于 2011-11-17T10:49:34.303 に答える
1

pipeこの特定のデータについては、多値フィールドが正しい答えですが、分離されたフィールドについて少し言いたいと思います。私はこれらをかなりの頻度で使用してきましたが、常にオブジェクト階層をフラット化するために使用しています。たとえば、通貨額を GBP|75000 で表したり、ディメンションを ft|14 で表したりします。

あるケースでは、7 つの異なるタグのさまざまな組み合わせを持つ XML ドキュメントのセクションを表すためにそれを使用したため、パイプで区切られた 7 つの項目のリストを持つ単一のフィールドを使用しました。例えば:

Promotion|||December Days||773635554238
|quarterpage|||||883736656534

これらの例のすべてについて 1 つのことは、項目リスト内の位置が固定されていることです。つまり、通貨コードが常に最初に、またはマーケティング ID が常に最後になります。GBP|*つまり、ポンド通貨を含む*|quarterpage|*すべてのドキュメントを検索したり、四半期ページの広告を含むすべてのドキュメントを検索したりするなど、確実に検索できることを意味します。

この最後の例の 1 つの弱点は、Marketing フィールドの 7 つの項目のすべての異なる用途でグローバルに一意の用語を使用していることに注意する必要があることです。これにより、用語が長くなり、RAM 使用量が高くなります。catあるときはカテゴリーを、あるときcatはカタログを意味するとうまくいきません。

于 2011-11-18T04:37:57.960 に答える