使用Lucene,确定文档中存在SQL表中的哪个名称

时间:2017-04-29 15:36:21

标签: lucene

我有一个带有人名的SQL表,我想找出我用Lucene索引的文档中的名称。 除了单独搜索每个名字之外,还有其他方法吗?

1 个答案:

答案 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。