1

Luceneを初めて使用するので、次の3つの基準に基づいて検索結果をフィルタリングしたいと思いました。

  1. フィールドの値document_typeProduct
  2. フィールドの値はbrand_id4である必要があります
  3. フィールドfamily_idの値は、(121、232、343)のすべての値である必要があります

したがって、基本的に必要なのは、検索結果に次のような組み合わせを含めることです。

  1. document_type:Product AND brand_id:4 AND family_id:121
  2. document_type:Product AND brand_id:4 AND family_id:232
  3. document_type:Product AND brand_id:4 AND family_id:343

document_type:Product AND brand_id:4 AND family_id:(121 232 343)はそのトリックを行うべきだと思いましたが、このクエリを解析している間、値のProductフィールドにインデックスを付けている間でも、標準アナライザーはとに設定されています。document_typeProductField.Index.NOT_ANALYZEDField.Store.YES

与えられた3つのケースに対して3つの可能なクエリを組み合わせることでブールクエリを作成できるかどうか疑問に思いました。

私はLuceneを初めて使用しますが、誰かがそれを手伝ってくれるでしょうか?

ありがとう。

4

1 に答える 1

1
Query.combine(Query[]) worked like a charm for the given situation. 

特定のメソッドのドキュメントは、こちらから入手できます。

結合が適用されると、クエリは次のようになります。

(+document_type:Product +brand_id:4 +family_id:121) (+document_type:Product +brand_id:4 +family_id:232) (+document_type:Product +brand_id:4 +family_id:343)

ありがとう。

于 2012-09-17T22:11:56.463 に答える