You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-user@lucene.apache.org by Mohammad Hasan <mz...@gmail.com> on 2008/04/30 06:41:31 UTC
Please help with Gradient Formatter
Dear all,
I need a working example of Gradient Formatter. I want to highlight a
searched word after it is found in the database. I am using NHibernate
Search & Lucene. But I am an entrly level programmer, so I do not know how
to use Gradient Formatter. There are plenty of examples of HTML Formatter
but no example for Gradient Formatter. Gradient Formatter asks for 5
arguments, that is where I run into troubles. I do not understand these 5
arguments. Instead of giving explanation, please post a working example of
Gradient Formatter of Highlighter which will highlight a searched word after
it is found in a database. Thanks.
Hasan
Re: Please help with Gradient Formatter
Posted by markharw00d <ma...@yahoo.co.uk>.
Here you go:
Analyzer a=new StandardAnalyzer();
//open an index
String textFieldName="contents";
IndexReader reader=IndexReader.open("E:/indexes/uksites");
IndexSearcher searcher=new IndexSearcher(reader);
QueryParser qp=new QueryParser(textFieldName,a);
//create a query (note one word is rarer than the other)
Query q=qp.parse("football club");
//Create a query scorer (passing a reader so that it can weight
terms based on doc frequency)
QueryScorer fragScorer = new QueryScorer(q,reader,"contents");
//callibrate the scoring range based on best (ie rarest) search term
float topScore=fragScorer.getMaxTermWeight();
//Create a gradient formatter with appropriate color ranges
GradientFormatter formatter=new
GradientFormatter(topScore,"#888888","#ff8888","#ffffff",
"#ffffff");
//create the highlighter
Highlighter highlighter=new Highlighter(formatter,fragScorer);
//run the query and highlight the results - graded by color to
reflect value of match
Hits hits = searcher.search(q);
int numToShow=Math.min(10,hits.length());
for (int i = 0; i < numToShow; i++)
{
String text=hits.doc(i).get(textFieldName);
TokenStream tokenStream = a.tokenStream(textFieldName, new
StringReader(text));
String highlightText =
highlighter.getBestFragments(tokenStream, text, 2, "...");
System.out.println("["+i+"="+hits.score(i)+"]"+highlightText);
}
Cheers,
Mark
Mohammad Hasan wrote:
> Dear all,
>
>
>
> I need a working example of Gradient Formatter. I want to highlight a
> searched word after it is found in the database. I am using NHibernate
> Search & Lucene. But I am an entrly level programmer, so I do not know how
> to use Gradient Formatter. There are plenty of examples of HTML Formatter
> but no example for Gradient Formatter. Gradient Formatter asks for 5
> arguments, that is where I run into troubles. I do not understand these 5
> arguments. Instead of giving explanation, please post a working example of
> Gradient Formatter of Highlighter which will highlight a searched word after
> it is found in a database. Thanks.
>
> Hasan
>
>
> ------------------------------------------------------------------------
>
> No virus found in this incoming message.
> Checked by AVG.
> Version: 7.5.524 / Virus Database: 269.23.6/1403 - Release Date: 29/04/2008 07:26
>
---------------------------------------------------------------------
To unsubscribe, e-mail: java-user-unsubscribe@lucene.apache.org
For additional commands, e-mail: java-user-help@lucene.apache.org