如何在Katta中使用FieldCache,FieldCache期望将IndexReader作为参数,然后如何从Katta API获取IndexReader。在katta中,LuceneClient.java中的搜索方法返回Hits。 从这里我可以获得List,从中我可以获得每个命中的docId,但我需要Katta中docId的特定字段值。请给我一些编码示例。
答案 0 :(得分:0)
我从未与Katta合作,我曾与Solr合作,如果我必须通过其ID获取文档而我只使用Lucene类,我会使用org.apache.lucene.search.IndexSearcher
:
// when you figure out how to get IndexReader using Katta API, you'll be able to get the searcher
IndexSearcher searcher = new IndexSearcher(indexReader);
org.apache.lucene.document.Document doc = searcher.doc(docId);
String yourFieldValue = doc.get("yourFieldName");
答案 1 :(得分:0)
您不能在客户端使用FieldCache,因为IndexReader位于服务器端! 但是你可以通过LuceneClient上的getDetails()方法获得字段值。
final Hits hits = client.search(query, new String[] { INDEX_NAME }, 10);
for (final Hit hit : hits.getHits()) {
final MapWritable details = client.getDetails(hit, new String[] { "path" });
details.get(new Text("path"));
HTH 约翰内斯