2011-03-10 2 views
0

Comment utiliser FieldCache dans Katta, FieldCache attend IndexReader comme arguments, puis comment obtenir IndexReader à partir de l'API Katta. Et En katta la méthode de recherche dans LuceneClient.java renvoie Hits. De là, je peux obtenir List, à partir de ça je peux obtenir le docId de chaque hit, mais j'ai besoin d'une valeur de champ particulière du docId dans Katta. S'il vous plaît donnez-moi un exemple de codage.Katta docId au document

Répondre

0

Je ne l'ai jamais travaillé avec Katta, j'ai travaillé avec Solr et si je devais récupérer un document par son identifiant et je devais utiliser uniquement des classes Lucene, j'utiliser 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

Merci pour vous répondre à mbonaci, mais en fait dans ma question elle-même je l'ai mentionné je ne peux pas en mesure de le trouver ... – Nageswaran

+0

Je pensais, en disant ceci: _Je peut en mesure pour obtenir le docId de chaque hit, mais j'ai besoin de la valeur de champ du docId_, vous ne saviez pas comment obtenir la valeur du champ si vous aviez docId. BTW, je ne veux pas être impoli, mais j'ai remarqué que vous utilisez _can_ et _able_ dans le mauvais sens. Vous dites soit que vous ne pouvez pas faire quelque chose ou que vous ne pouvez pas faire quelque chose. Ces deux-là ne vont pas bien ensemble :) –

+0

Katta n'est-il pas semblable à Lucandra? Je veux dire qu'il doit y avoir aussi une sorte d'abstraction dans Katta. –

0

vous pouvez n'utilisez pas le FieldCache côté client, puisque le IndexReader est situé côté serveur! Mais vous pouvez obtenir des valeurs de champs via la méthode getDetails() sur LuceneClient.

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 Johannes