【发布时间】:2011-03-10 06:59:32
【问题描述】:
如何在 Katta 中使用 FieldCache,FieldCache 需要 IndexReader 作为参数,然后如何从 Katta API 获取 IndexReader。而在 katta 中,LuceneClient.java 中的搜索方法返回 Hits。 从这里我可以得到列表,从中我可以得到每个命中的 docId,但我需要 Katta 中 docId 的特定字段值。请给我一些编码示例。
【问题讨论】:
如何在 Katta 中使用 FieldCache,FieldCache 需要 IndexReader 作为参数,然后如何从 Katta API 获取 IndexReader。而在 katta 中,LuceneClient.java 中的搜索方法返回 Hits。 从这里我可以得到列表,从中我可以得到每个命中的 docId,但我需要 Katta 中 docId 的特定字段值。请给我一些编码示例。
【问题讨论】:
我从未使用过 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");
【讨论】:
您不能在客户端使用 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 约翰内斯
【讨论】: