[lucene] lucene4.10 如何获得关键词在结果中的命中次数

fzu_rookie 2015-11-02

在用lucene建索引的时候对一个需求犯了愁,想请问各位。

需要建索引的有2张表

A表中存在area_id,area_name字段 B表中存在id,area_name,address字段。我用联合查询创建了一个索引,同时有area_id,area_name,address字段。

当我用MultiQueryParser查询“南街”时,会查询到一些结果,比如在address字段中会有"人民南街,厦门南街,北京南街",在这个字段中一共出现了3次南街,我想拿到查询的关键字在field中匹配的次数,就是这个3次,请问这种需求需要自己实现或者Lucene中有提供什么api吗,或者有什么更好的办法实现吗

 

amw_demon 2015-11-04
2.X没有这个API,4.X估计也没有,不过算分的过程中有这个参数,你可以把lucene检索算的分数返回这个值。
fzu_rookie 2015-11-05
amw_demon 写道
2.X没有这个API,4.X估计也没有,不过算分的过程中有这个参数,你可以把lucene检索算的分数返回这个值。

lucene的算分过程有暴露出来吗,有的话还能拿到这个参数,如果没有的话是不是要查看Lucene的源码去看这个参数怎么来的。
我目前是先用自己写的循环去求得这个参数,因为值都是"人民南街,厦门南街,北京南街"这样由逗号分隔开的,所以我直接split分开以后用indexof判断命中次数了,这样的查询效率在千次查询1030ms左右,这样的时间是不是还有提高空间。
谢谢您给我解答。
Global site tag (gtag.js) - Google Analytics