我一直在研究DisMaxQueryBuilder,以便创建一个查询,通过该查询可以检索对象中的子对象。更清楚地说,我有一个包含“标签”集的对象资产。
public class Asset extends BaseEntity
{
String name;
String code;
Language defaultLanguage;
@Singular Set<Participant> participants;
@Singular Set<Tag> tags;
}
在编码中,我使用了以下查询生成器来搜索Asset Object中特定字段的特定短语。通过使用下面定义的查询,输入的短语将与“名称”字段中的每个项目匹配,如果出现匹配,我们将使该对象返回。
DisMaxQueryBuilder builder = disMaxQuery()
.add(matchPhrasePrefixQuery("name",phrase).boost(1.0f));
现在,我的问题是我希望输入的短语必须在Asset Object的tag字段中查找,然后匹配Tag对象的描述字段以防命中和遗漏。
public class Tag extends BaseEntity
{
String type;
String description;
Map<String, Description> descriptions;
}
我无法找出迭代标签的方法,然后使用相同的查询构建器逐一搜索每个标签字段,以查找命中和遗漏。
在抽象视图中,我需要类似的内容,但不知道如何使用此查询生成器来实现它。
.add(matchPhrasePrefixQuery("tags.eachTag.description",phrase).boost(1.0f)
)
如果有人知道实现此功能的一些解决方法,我将非常感谢您的努力。
谢谢