RE: HITCOLLECTOR+SCORE+DELIMA

2004-12-13 Thread Vikas Gupta
 On Dec 10, 2004, at 7:39 AM, Karthik N S wrote:
  I am still in delima on How to use the HitCollector for returning
  Hits hits
  between scores  0.2f to 1.0f ,
 
  There is not a simple example for the same, yet lot's of talk on usage
  for
  the same on the form.

1) I am not 100% sure about this but it might work.

Add the code starting with  in IndexSearcher.java::search()

 // inherit javadoc
  public TopDocs search(Query query, Filter filter, final int nDocs)
   throws IOException {
Scorer scorer = query.weight(this).scorer(reader);
if (scorer == null)
  return new TopDocs(0, new ScoreDoc[0]);

final BitSet bits = filter != null ? filter.bits(reader) : null;
final HitQueue hq = new HitQueue(nDocs);
final int[] totalHits = new int[1];
scorer.score(new HitCollector() {
public final void collect(int doc, float score) {
  if (score  0.0f  // ignore zeroed buckets
  score 0.2f  score1.0f)
  (bits==null || bits.get(doc))) {// skip docs not in bits
totalHits[0]++;
hq.insert(new ScoreDoc(doc, score));
  }
}
  });



2) Filter examples are in Lucene in Action book, Chapter 5. I wrote an
example as well:



String query = odyssey;

BooleanQuery bq = new BooleanQuery();
bq.add(new TermQuery(new Term(content, query)), true, false);

BooleanQuery bqf = new BooleanQuery();
bqf.add(new TermQuery(new Term(H2, query)), true, false);

Filter f = new QueryFilter(bqf);

IndexReader reader = IndexReader.open(new File(dir, 
index).getCanonicalPath());
Searcher luceneSearcher = new 
org.apache.lucene.search.IndexSearcher(reader);
luceneSearcher.setSimilarity(new NutchSimilarity());

//Logically the following would be executed as follows: Find all
//the docs matching bq. Select the ones which matchbqf
hits = luceneSearcher.search(bq, f);

System.out.print(query:  + query);

System.out.println(Total hits:  + hits.length());

3) delima is spelled as dilemma


-Vikas Gupta

-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Re: HITCOLLECTOR+SCORE+DELIMA

2004-12-13 Thread Erik Hatcher
On Dec 13, 2004, at 1:16 AM, Karthik N S wrote:
So u say I have to Build a Filter to Collect all the Scores between 
the 2
Ranges [ 0.2f to 1.0f]
My message is being misinterpreted.  I said filter as a verb, not a 
noun.  :)  In other words, I was not intending to mean write a Filter - 
a Filter would not be able to filter on score.

so the API for the same would be
 Hits hit = search(Query query, Filter filtertoGetScore)
 But while writing the Filter  Score again depends on Hits   
Score =
hits.score(x);
Again, you cannot write a Filter (capital 'F') to deal with score.
Please re-read what I said below...
Hits are in descending score
order, so you may just want to use Hits and filter based on the score
provided by hits.score(i).
Iterate over Hits... when you encounter scores below your desired 
range, stop iterating.  Why is this simple procedure not good enough 
for what you are trying to achieve?

Erik
-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]


RE: HITCOLLECTOR+SCORE+DELIMA

2004-12-12 Thread Karthik N S

Hi Guys

Apologies..


So u say I have to Build a Filter to Collect all the Scores between the 2
Ranges [ 0.2f to 1.0f]


so the API for the same would be

 Hits hit = search(Query query, Filter filtertoGetScore)


 But while writing the Filter  Score again depends on Hits   Score =
hits.score(x);



 How To solve this Or Am I in Wrong Process


Any Simple Src for the same will be greatly appreciated.  :)

Thx in advance



-Original Message-
From: Erik Hatcher [mailto:[EMAIL PROTECTED]
Sent: Friday, December 10, 2004 6:54 PM
To: Lucene Users List
Subject: Re: HITCOLLECTOR+SCORE+DELIMA


On Dec 10, 2004, at 7:39 AM, Karthik N S wrote:
 I am still in delima on How to use the HitCollector for returning
 Hits hits
 between scores  0.2f to 1.0f ,

 There is not a simple example for the same, yet lot's of talk on usage
 for
 the same on the form.

Unfortunately there isn't a clean way to stop a HitCollector - it will
simply collect all hits.

Also, scores are _not_ normalized when passed to a HitCollector, so you
may get scores  1.0.  Hits, however, does normalize and you're
guaranteed that scores will be = 1.0.  Hits are in descending score
order, so you may just want to use Hits and filter based on the score
provided by hits.score(i).

Erik


-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]


-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



HITCOLLECTOR+SCORE+DELIMA

2004-12-10 Thread Karthik N S

Hi guys

Apologies.



I am still in delima on How to use the HitCollector for returning  Hits hits
between scores  0.2f to 1.0f ,

There is not a simple example for the same, yet lot's of talk on usage for
the same on the form.

Please somebody spare a bit of code (u'r intelligence) on this form.





Thx in advance
Karthik

























  WITH WARM REGARDS
  HAVE A NICE DAY
  [ N.S.KARTHIK]




-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Re: HITCOLLECTOR+SCORE+DELIMA

2004-12-10 Thread Erik Hatcher
On Dec 10, 2004, at 7:39 AM, Karthik N S wrote:
I am still in delima on How to use the HitCollector for returning  
Hits hits
between scores  0.2f to 1.0f ,

There is not a simple example for the same, yet lot's of talk on usage 
for
the same on the form.
Unfortunately there isn't a clean way to stop a HitCollector - it will 
simply collect all hits.

Also, scores are _not_ normalized when passed to a HitCollector, so you 
may get scores  1.0.  Hits, however, does normalize and you're 
guaranteed that scores will be = 1.0.  Hits are in descending score 
order, so you may just want to use Hits and filter based on the score 
provided by hits.score(i).

Erik
-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]