cvsimport
[beagle.git] / beagled / Lucene.Net / Search / ExactPhraseScorer.cs
blobbeb04506a7412cf048ebb0a77c17d173c9caf59e
1 /*
2 * Copyright 2004 The Apache Software Foundation
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
17 using System;
18 using Lucene.Net.Index;
20 namespace Lucene.Net.Search
23 sealed class ExactPhraseScorer : PhraseScorer
26 internal ExactPhraseScorer(Weight weight, TermPositions[] tps, int[] positions, Similarity similarity, byte[] norms) : base(weight, tps, positions, similarity, norms)
30 protected internal override float PhraseFreq()
32 // sort list with pq
33 for (PhrasePositions pp = first; pp != null; pp = pp.next)
35 pp.FirstPosition();
36 pq.Put(pp); // build pq from list
38 PqToList(); // rebuild list from pq
40 int freq = 0;
41 do
43 // find position w/ all terms
44 while (first.position < last.position)
46 // scan forward in first
47 do
49 if (!first.NextPosition())
51 return (float) freq;
54 while (first.position < last.position);
55 FirstToLast();
57 freq++; // all equal: a match
59 while (last.NextPosition());
61 return (float) freq;