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”-没问题,布尔查询中可以有任意数量的子句