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

Lucene 可以使用名称中具有给定前缀的字段进行搜索?,lucene,Lucene,可以创建一个查询,该查询将搜索具有给定前缀名称的所有字段 我需要它,因为我需要索引我正在索引的对象附带的一些信息,例如类别。类别可以有不同的级别。我想给不同的类别级别以不同的提升 我注意到我可以在索引时多次添加字段。 我是否可以多次添加此catName字段,使用不同的增强,然后搜索它,因为它是一个字段 int level = 1; for (Category cat : sortedCategories) { float boost = CATEGORY_BOOST / level;

可以创建一个查询,该查询将搜索具有给定前缀名称的所有字段

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

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

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


或者,您可以为前缀创建一个专用索引-如果您的字段名为“Pre1”和“Pre2”,您可以添加一个新的索引字段“Pre”,并为“Pre1”和“Pre2”中的文档集合编制索引。

您可以保持索引不变,只需创建一个布尔查询,该查询使用多个子句,每个字段名一个,并且发生。应该


或者,您可以为前缀创建专用索引-如果字段名为“Pre1”和“Pre2”,则可以添加新的索引字段“Pre”,并为“Pre1”和“Pre2”中的文档集合编制索引。

但是可以有Pre1和Pre2,也可以有Pre6。因此,使用BooleanQuery看起来既不优雅也不灵活。但我不知道第二个方案如何实施。我想我会用相同的名字创建多个字段,但是使用不同的boost。应该有效吗?:“Pre1和Pre2但也有Pre6”-没问题,BooleanQueryB中可以有任意数量的子句,但是可以有Pre1和Pre2,但也可以有Pre6。因此,使用BooleanQuery看起来既不优雅也不灵活。但我不知道第二个方案如何实施。我想我会用相同的名字创建多个字段,但是使用不同的boost。应该工作吗?:“Pre1和Pre2,但也包括Pre6”-没问题,布尔查询中可以有任意数量的子句