lucene - lucene8.7.0 如何一次性搜索多个域并配置权重及分析器

世界上并没有完美的程序,但是我们并不因此而沮丧,因为写程序就是一个不断追求完美的过程。

问 :如何实现多域搜索?
答 :使用 MultiFieldQueryParser

public void articleSearchServiceTest() throws ParseException {
	 ArticleSearchService articleSearchService =
	         ServiceBindCache.getBean(ArticleSearchService.class);
	
	 Map<String, Float> boosts = new HashMap<>();
	
	 boosts.put("title", 10F);
	 boosts.put("content", 1F);
	
	 QueryParser parser = new MultiFieldQueryParser(
	         new String[]{"title", "content"},
	         new StandardAnalyzer(), boosts);
	
	 Query query = parser.parse("白日");
	
	 Result result = articleSearchService.search(indexRoot, query, 10);
	
	 result.getDocs().forEach(doc -> {
	         System.out.println("title : " + doc.get("title") + " " +
	                 "content : " + doc.get("content"));
	 });
}

# 结果
title : 白日夜话 content : 我心安处即吾乡
title : 登鹳雀楼 content : 白日依山尽,黄河入海流。欲穷千里目,更上一层楼。
title : 登鹳雀楼 content : 白日依山尽,黄河入海流。欲穷千里目,更上一层楼。
title : 登鹳雀楼 content : 白日依山尽,黄河入海流。欲穷千里目,更上一层楼。
title : 望庐山瀑布 content : 日照香炉生紫烟,遥看瀑布挂前川。飞流直下三千尺,疑是银河落九天。
title : 望庐山瀑布 content : 日照香炉生紫烟,遥看瀑布挂前川。飞流直下三千尺,疑是银河落九天。
title : 望庐山瀑布 content : 日照香炉生紫烟,遥看瀑布挂前川。飞流直下三千尺,疑是银河落九天。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

这是谁的博客?

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值