我有一个带有人名的SQL表,我想找出我用Lucene索引的文档中的名称。 除了单独搜索每个名字之外,还有其他方法吗?
答案 0 :(得分:1)
我想,您可以使用WildcardQuery
并仅搜索" *" 字符串来实现这一目标。
TopDocs hits = searcher.search(new WildcardQuery(new Term(AppConstants.NAME, "*")), 20);
if (null == hits.scoreDocs || hits.scoreDocs.length <= 0) {
System.out.println("No Hits Found");
return;
}
for (ScoreDoc hit : hits.scoreDocs) {
Document doc = searcher.doc(hit.doc);
.......build a list of names or whatever or cross check with DB table etc etc......
}
在上面的代码中,AppConstants.NAME
是名称字段名称,并假设读者和searcher
已经初始化。
代替20
的命中限制,您可以根据表格中的行数指定所需的任何数字。
请准备好使用外卡搜索速度很慢,并且在很大程度上取决于您的索引大小。
在向Lucene提问时,请始终指定Lucene版本和API技术 - Java或.NET。
以上Java代码适用于Lucene 6.0.0。