由于我无法控制的原因,我必须通过全局搜索来执行此操作。我采取了将搜索词"John J“转换为(John AND J)的方法,它适用于任何姓氏与名字不同的人。
我怎样才能使"John J“的搜索变成”找到所有拥有John的人,然后在领域中找到另一个不同的J的人“?
耽误您时间,实在对不起。
发布于 2017-07-07 06:51:30
例如:
Term term = new Term("secondName", "J*");
Query query = new WildcardQuery(term);我假设你的名字和名字有不同的字段。您可以使用名和名的组合查询来创建布尔查询。
WildcardQuery文档:http://lucene.apache.org/core/6_2_0/core/org/apache/lucene/search/WildcardQuery.html
我希望这能帮到你。
发布于 2017-07-08 02:00:47
既然你提到了它是一种提前输入;prefixQuery可能会有所帮助-
new PrefixQuery(new Term("lastName","J"));这将返回lastName以"J“开头的所有文档。
要获得firstName以"John“开头而 lastName以"J”开头的结果,您可以使用-
BooleanQuery.Builder booleanQueryBuilder;
booleanQueryBuilder.add(new PrefixQuery(new Term("firstName","John")));
booleanQueryBuilder.add(new PrefixQuery(new Term("lastName","J")));`https://stackoverflow.com/questions/44958968
复制相似问题