2011-03-10 6 views
0

KattaでFieldCacheを使用するには、FieldCacheはIndexReaderを引数として、次にKatta APIからIndexReaderを取得する方法を想定しています。そして、kattaではLuceneClient.javaの検索メソッドがHitsを返します。 これから私はListから各ヒットのdocIdを得ることができますが、私はKattaのdocIdの特定のフィールド値が必要です。コーディング例を教えてください。Katta docId to Document

答えて

0

私は刈田で働いたことがありません、私は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"); 
+0

おかげで、あなたはmbonaciに答えるために、実際に私の質問自体に私は、思った私は – Nageswaran

+0

...それを見つけることができないことはでき言及したようにこれを言って:_IできることそれぞれのヒットのdocIdを取得するが、docIdの特定のフィールド値が必要な場合は、docIdを持っていればフィールド値を取得する方法を知らなかった。ところで、私は失礼ではありませんが、_can_と_able_を間違った方法で使用していることに気付きました。あなたは、何かをすることができないか、何かをすることはできないとあなたは言う。それらの2つはうまくいっていない:) –

+0

カッタはLucandraに似ていませんか?私はKattaでも何らかのディレクトリ抽象化がなければならないということです。 –

0

することができますIndexReaderがサーバー側にあるため、クライアント側でFieldCacheを使用しないでください! しかし、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 ヨハネス