1

指定されたプレフィックスを持つ名前を持つすべてのフィールドを検索するクエリを作成することは可能ですか?

カテゴリなど、インデックスを作成しているオブジェクトに付属する情報にインデックスを付ける必要があるため、これが必要です。カテゴリにはさまざまなレベルがあります。さまざまなカテゴリ レベルにさまざまなブーストを与えたいと考えています。

インデックス作成中にフィールドを複数回追加できることに気付きました。このcatNameフィールドを複数回追加し、異なるブーストを使用して、1 つのフィールドとして検索することはできますか?

int level = 1;

for (Category cat : sortedCategories) {
    float boost = CATEGORY_BOOST / level;
    String catName = CATEGORY_NAME + String.valueOf(level);
    TextField categoryName = new TextField(catName, cat.getName(),
                                           Field.Store.NO);
    categoryName.setBoost(boost);
    doc.add(categoryName);
4

1 に答える 1

1

インデックスを変更せずに、フィールド名ごとに1つずつ、複数の句とOccurs.SHOULDを使用するBooleanQueryを作成するだけです。

または、プレフィックス専用のインデックスを作成できます。フィールド名が「Pre1」と「Pre2」の場合は、新しいインデックスフィールド「Pre」を追加して、「Pre1」と「Pre2」のドキュメントの集計にインデックスを付けることができます。 。

于 2012-11-30T20:32:13.087 に答える