Java Lucene : Use spans to get number of matches in a document

标签 java lucene

如何使用 span 对象为 spanNearQuery 获取文档中的所有匹配项,我到这里为止,但不确定如何继续

     for(int i =0; i < splitwords.length ; i++)
                     {
                         sQuery[i] = new SpanTermQuery(new Term(field,splitwords[i]));
                     }
                     SpanQuery queryCount = new SpanNearQuery(sQuery, 0, true);
                     int numspans = 0;
                     Spans span = queryCount.getSpans(reader);
                     int docId;
                     while(span.next())
                     {
                         numspans++;
                         docId = span.doc();
                         System.out.println(span.end() - span.start());
                     }

我能否获得当前文档中的所有匹配项(匹配项的数量)?

最佳答案

这将为您提供一个哈希表,其中包含每个文档 ID 的匹配项数:

Hashtable<Integer, Integer> hits = new Hashtable<Integer, Integer>();
while (spans.next() == true)
{
     int docID = spans.doc();
     int hit = hits.get(docID) != null ? hits.get(docID) : 0;
     hit++;
     hits.put(docID, hit);
}

关于Java Lucene : Use spans to get number of matches in a document,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5514833/

相关文章:

elasticsearch - 通过Elasticsearch在磁盘上存储在lucene中的原始json文档在哪里(linux-ubuntu)

java - 如何使用 Jersey 和 Dropwizard 重定向用户并将消息传递到目标页面?

java - Android Hello World : Able to install APK into Android, 无法运行/启动 APK

java - 未检测 int 数组中的所有重复项

solr - 将多个文件发送到solr

mysql - 使用 ElasticSearch JDBC river 从表中获取更改

java - 使用 ObjectFactory 时可空元素在输出文件中获取冗余数据

java,程序不会因 scan.nextLine() 而停止

java - Lucene:IndexSearcher.search() 在非常大的数据库上导致 java 堆空间错误

apache - 如何修复 java IOException : Can't find resource 'solrconfig.xml' in classpath?