1

是否可以创建将在所有具有给定前缀名称的字段中搜索的查询?

我需要它,因为我需要索引一些我正在索引的对象附带的信息,例如类别。类别可以有不同的级别。我想为不同的类别级别提供不同的提升。

我注意到我可以在索引时多次添加一个字段。我可以catName多次添加这个字段,使用不同的提升然后搜索它,因为它是一个字段吗?

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

您可以保持索引不变,只需创建一个使用多个子句的 BooleanQuery,每个字段名称一个,以及 Occurs.SHOULD。

或者,您可以为前缀创建一个专用索引 - 如果您的字段名称是“Pre1”和“Pre2”,您可以添加一个新的索引字段“Pre”并索引来自“Pre1”和“Pre2”的文档聚合.

于 2012-11-30T20:32:13.087 回答