You are viewing a plain text version of this content. The canonical link for it is here.
Posted to solr-user@lucene.apache.org by Silvia Suárez <ss...@anpro21.com> on 2014/05/07 15:50:43 UTC
Problem with getting tv.tf_idf values.
Dear all,
I'm trying to get tv.tf_idf values from my Solr documents into the
termvector. I am using SolrJ.
However it is not working.
I'm setting the values to true (tv.tf_idf) in my search:
public static QueryResponse doQuery(SolrServer server, String queryEnt,
String myCollection)
throws SolrServerException {
SolrQuery solrQuery = new SolrQuery();
solrQuery.setQuery(queryEnt);
solrQuery.set("collectionName", myCollection);
solrQuery.addHighlightField("texto")
.addHighlightField("titular")
.setHighlightSnippets(200000)
.setHighlightFragsize(0);
solrQuery.set("hl.useFastVectorHighlighter", true);
solrQuery.set("hl.fragListBuilder", "single");
solrQuery.set("tv.fl", "titular");
solrQuery.set("tv.tf", true);
solrQuery.set("tv.tf_idf", true);
solrQuery.set("hl.fragmentsBuilder", "colored");
solrQuery.setHighlightSimplePre("<span class=\"item\">");
solrQuery.setHighlightSimplePost("</span>");
solrQuery.set("fl", "c_noticia titular texto");
solrQuery.setStart(start);
solrQuery.setRows(nbDocuments);
return server.query(solrQuery);
}
and then I am using the code in:
http://stackoverflow.com/questions/8977852/how-to-parse-the-termvectorcomponent-response-to-which-java-object,
to get the values:
public static void printOr(QueryResponse response) throws
SolrServerException, ParseException, IOException
{
Iterator<Entry<String, Object>> termVectors = ((NamedList)
response.getResponse().get("termVectors")).iterator();
while(termVectors.hasNext()){ Entry<String, Object> docTermVector =
termVectors.next(); for(Iterator<Entry<String, Object>> fi =
((NamedList)docTermVector.getValue()).iterator(); fi.hasNext(); ){
Entry<String, Object> fieldEntry = fi.next();
if(fieldEntry.getKey().equals("contents")){ for(Iterator<Entry<String,
Object>> tvInfoIt = ((NamedList)fieldEntry.getValue()).iterator();
tvInfoIt.hasNext(); ){ Entry<String, Object> tvInfo = tvInfoIt.next();
NamedList tv = (NamedList) tvInfo.getValue(); System.out.println("Vector
Info: " + tvInfo.getKey() + " tf: " + tv.get("tf") + " df: " + tv.get("df")
+ " tf-idf: " + tv.get("tf-idf")); } } } }
}
But i'm having this error:
Exception in thread "main" java.lang.ClassCastException: java.lang.String
cannot be cast to org.apache.solr.common.util.NamedList
Could anybody helpme please with this problem?
thanks a lot in advance.
Silvia