可以使用名称中具有给定前缀的字段进行搜索吗?

时间:2012-11-30 15:35:05

标签: lucene

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

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

我注意到索引时我可以多次添加一个字段。 我可以多次添加此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);

1 个答案:

答案 0 :(得分:1)

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

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