例如,当我使用此DSL进行搜索时:
Query query = queryBuilder.keyword().onField("person").matching("man").createQuery();
我希望结果只包含字段man
上的单个字person
,而字段上没有像He is a man
这样的结果。我该怎么办?
有人有线索吗? THX
答案 0 :(得分:1)
这不是自由文本搜索的工作方式。您不能说它只应匹配搜索词匹配且只有一个词。自由文本搜索引擎的重点是在给定的文本语料库中查找匹配。如果您的现场人员包含一次" man"曾经"他是一个男人"你得到两者的匹配(除非你索引未分析的字段)。差异在于得分。
答案 1 :(得分:1)
在你的情况下,我坚持使用标准的Hibernate查询(在HQL中,它类似于from MyClass mc where mc.person = "man"
)。您可以找到有关HQL here
如果不能选择HQL,请考虑使用JPA条件API。
正如@Hardy在回答中提到的,您的用例与全文搜索方法不匹配。