2011-03-10 4 views
0

Katta에서 FieldCache를 사용하는 방법은 FieldCache가 IndexReader를 인수로 사용하고 Katta API에서 IndexReader를 가져 오는 방법입니다. 그리고 katta에서는 LuceneClient.java의 검색 메소드가 Hits를 반환합니다. 이 목록에서 각 히트의 docId를 가져올 수는 있지만 Katta의 docId의 특정 필드 값이 필요합니다. 코딩 예제를 알려주십시오. 내가 Katta 함께 일한 적이Katta docId to Document

답변

0

, 나는 SOLR로 근무하고 나는 그것의 ID로 문서를 얻을 수 있었고, 난 단지 루씬 클래스를 사용해야한다면, 나는 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가 있다면 필드 값을 얻는 방법을 알지 못했습니다. BTW, 나는 무례하고 싶지는 않지만 잘못된 방식으로 _can_ 및 _able_을 사용하는 것으로 나타났습니다. 당신은 당신이 무언가를 할 수 없다거나 무언가를 할 수 없다고 말합니다. 그 두 사람은 잘 어울리지 않는다. –

+0

Katta는 Lucandra와 비슷하지 않니? 나는 Katta에서도 일종의 Directory 추상화가 있어야한다는 것을 의미합니다. –

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 요하네스