blob: 53c7d1d9b3208516b2eaceecf40e1f63202b865a [file] [log] [blame]
/* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
parcel Lucy;
/** Posting with per-position boost.
*
* RichPosting is similar to
* L<ScorePosting|Lucy::Index::Posting::ScorePosting>, but weighting is
* per-position rather than per-field. To exploit this, you need a custom
* L<Analyzer|Lucy::Analysis::Analyzer> which assigns varying boosts to
* individual L<Token|Lucy::Analysis::Token> objects.
*
* A typical application for RichPosting is an HTMLAnalyzer which assigns
* boost based on the visual size and weight of the marked up text: H1
* blocks get the greatest weight, H2 blocks almost as much, etc.
*/
class Lucy::Index::Posting::RichPosting cnick RichPost
inherits Lucy::Index::Posting::ScorePosting {
float *prox_boosts;
inert incremented RichPosting*
new(Similarity *similarity);
inert RichPosting*
init(RichPosting *self, Similarity *similarity);
public void
Destroy(RichPosting *self);
void
Read_Record(RichPosting *self, InStream *instream);
incremented RawPosting*
Read_Raw(RichPosting *self, InStream *instream, int32_t last_doc_id,
CharBuf *term_text, MemoryPool *mem_pool);
void
Add_Inversion_To_Pool(RichPosting *self, PostingPool *post_pool,
Inversion *inversion, FieldType *type,
int32_t doc_id, float doc_boost,
float length_norm);
incremented RichPostingMatcher*
Make_Matcher(RichPosting *self, Similarity *sim, PostingList *plist,
Compiler *compiler, bool_t need_score);
}
class Lucy::Index::Posting::RichPostingMatcher cnick RichPostMatcher
inherits Lucy::Index::Posting::ScorePostingMatcher {
inert RichPostingMatcher*
init(RichPostingMatcher *self, Similarity *similarity,
PostingList *posting_list, Compiler *compiler);
}