You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucy.apache.org by ma...@apache.org on 2013/07/12 00:33:32 UTC
[lucy-commits] [07/11] git commit: refs/heads/ivars-wip1 - Fixup Lucy posting
classes IVARS glitches.
Fixup Lucy posting classes IVARS glitches.
(Will be folded into earlier commit before merging to master.)
Project: http://git-wip-us.apache.org/repos/asf/lucy/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucy/commit/fb7d4fac
Tree: http://git-wip-us.apache.org/repos/asf/lucy/tree/fb7d4fac
Diff: http://git-wip-us.apache.org/repos/asf/lucy/diff/fb7d4fac
Branch: refs/heads/ivars-wip1
Commit: fb7d4facd02083ab4a32769a5a7106ea6e364f12
Parents: ea242c8
Author: Marvin Humphrey <ma...@rectangular.com>
Authored: Thu Jul 11 15:04:30 2013 -0700
Committer: Marvin Humphrey <ma...@rectangular.com>
Committed: Thu Jul 11 15:04:30 2013 -0700
----------------------------------------------------------------------
core/Lucy/Index/Posting/MatchPosting.c | 11 +++++++----
core/Lucy/Index/Posting/RawPosting.c | 7 ++++---
core/Lucy/Index/Posting/RichPosting.c | 11 +++++++----
core/Lucy/Index/Posting/ScorePosting.c | 18 +++++++++++-------
4 files changed, 29 insertions(+), 18 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/lucy/blob/fb7d4fac/core/Lucy/Index/Posting/MatchPosting.c
----------------------------------------------------------------------
diff --git a/core/Lucy/Index/Posting/MatchPosting.c b/core/Lucy/Index/Posting/MatchPosting.c
index f12a4c8..bdb9f97 100644
--- a/core/Lucy/Index/Posting/MatchPosting.c
+++ b/core/Lucy/Index/Posting/MatchPosting.c
@@ -43,8 +43,8 @@
#include "Lucy/Store/OutStream.h"
#include "Lucy/Util/MemoryPool.h"
-#define MAX_RAW_POSTING_LEN(_text_len) \
- ( sizeof(RawPosting) \
+#define MAX_RAW_POSTING_LEN(_raw_post_size, _text_len) \
+ ( _raw_post_size \
+ _text_len + 1 /* term text content */ \
)
@@ -105,7 +105,8 @@ MatchPost_read_raw(MatchPosting *self, InStream *instream, int32_t last_doc_id,
const uint32_t freq = (doc_code & 1)
? 1
: InStream_Read_C32(instream);
- size_t raw_post_bytes = MAX_RAW_POSTING_LEN(text_size);
+ const size_t base_size = VTable_Get_Obj_Alloc_Size(RAWPOSTING);
+ size_t raw_post_bytes = MAX_RAW_POSTING_LEN(base_size, text_size);
void *const allocation = MemPool_Grab(mem_pool, raw_post_bytes);
UNUSED_VAR(self);
@@ -118,6 +119,7 @@ MatchPost_add_inversion_to_pool(MatchPosting *self, PostingPool *post_pool,
int32_t doc_id, float doc_boost,
float length_norm) {
MemoryPool *mem_pool = PostPool_Get_Mem_Pool(post_pool);
+ const size_t base_size = VTable_Get_Obj_Alloc_Size(RAWPOSTING);
Token **tokens;
uint32_t freq;
@@ -129,7 +131,8 @@ MatchPost_add_inversion_to_pool(MatchPosting *self, PostingPool *post_pool,
Inversion_Reset(inversion);
while ((tokens = Inversion_Next_Cluster(inversion, &freq)) != NULL) {
TokenIVARS *const token_ivars = Token_IVARS(*tokens);
- uint32_t raw_post_bytes = MAX_RAW_POSTING_LEN(token_ivars->len);
+ uint32_t raw_post_bytes
+ = MAX_RAW_POSTING_LEN(base_size, token_ivars->len);
RawPosting *raw_posting
= RawPost_new(MemPool_Grab(mem_pool, raw_post_bytes), doc_id,
freq, token_ivars->text, token_ivars->len);
http://git-wip-us.apache.org/repos/asf/lucy/blob/fb7d4fac/core/Lucy/Index/Posting/RawPosting.c
----------------------------------------------------------------------
diff --git a/core/Lucy/Index/Posting/RawPosting.c b/core/Lucy/Index/Posting/RawPosting.c
index 624beda..1fb73be 100644
--- a/core/Lucy/Index/Posting/RawPosting.c
+++ b/core/Lucy/Index/Posting/RawPosting.c
@@ -96,7 +96,8 @@ void
RawPostWriter_start_term(RawPostingWriter *self, TermInfo *tinfo) {
RawPostingWriterIVARS *const ivars = RawPostWriter_IVARS(self);
ivars->last_doc_id = 0;
- tinfo->post_filepos = OutStream_Tell(ivars->outstream);
+ TermInfoIVARS *const tinfo_ivars = TInfo_IVARS(tinfo);
+ tinfo_ivars->post_filepos = OutStream_Tell(ivars->outstream);
}
void
@@ -122,14 +123,14 @@ RawPostWriter_write_posting(RawPostingWriter *self, RawPosting *posting) {
const uint32_t delta_doc = doc_id - ivars->last_doc_id;
char *const aux_content = posting_ivars->blob
+ posting_ivars->content_len;
- if (posting->freq == 1) {
+ if (posting_ivars->freq == 1) {
const uint32_t doc_code = (delta_doc << 1) | 1;
OutStream_Write_C32(outstream, doc_code);
}
else {
const uint32_t doc_code = delta_doc << 1;
OutStream_Write_C32(outstream, doc_code);
- OutStream_Write_C32(outstream, posting->freq);
+ OutStream_Write_C32(outstream, posting_ivars->freq);
}
OutStream_Write_Bytes(outstream, aux_content, posting_ivars->aux_len);
ivars->last_doc_id = doc_id;
http://git-wip-us.apache.org/repos/asf/lucy/blob/fb7d4fac/core/Lucy/Index/Posting/RichPosting.c
----------------------------------------------------------------------
diff --git a/core/Lucy/Index/Posting/RichPosting.c b/core/Lucy/Index/Posting/RichPosting.c
index 40b23b6..9715765 100644
--- a/core/Lucy/Index/Posting/RichPosting.c
+++ b/core/Lucy/Index/Posting/RichPosting.c
@@ -33,8 +33,8 @@
#include "Lucy/Util/MemoryPool.h"
#define FREQ_MAX_LEN C32_MAX_BYTES
-#define MAX_RAW_POSTING_LEN(_text_len, _freq) \
- ( sizeof(RawPosting) \
+#define MAX_RAW_POSTING_LEN(_raw_posting_size, _text_len, _freq) \
+ ( _raw_posting_size \
+ _text_len /* term text content */ \
+ FREQ_MAX_LEN /* freq c32 */ \
+ (C32_MAX_BYTES * _freq) /* positions deltas */ \
@@ -113,13 +113,15 @@ RichPost_add_inversion_to_pool(RichPosting *self, PostingPool *post_pool,
MemoryPool *mem_pool = PostPool_Get_Mem_Pool(post_pool);
Similarity *sim = ivars->sim;
float field_boost = doc_boost * FType_Get_Boost(type) * length_norm;
+ const size_t base_size = VTable_Get_Obj_Alloc_Size(RAWPOSTING);
Token **tokens;
uint32_t freq;
Inversion_Reset(inversion);
while ((tokens = Inversion_Next_Cluster(inversion, &freq)) != NULL) {
TokenIVARS *const token_ivars = Token_IVARS(*tokens);
- uint32_t raw_post_bytes = MAX_RAW_POSTING_LEN(token_ivars->len, freq);
+ uint32_t raw_post_bytes
+ = MAX_RAW_POSTING_LEN(base_size, token_ivars->len, freq);
RawPosting *raw_posting
= RawPost_new(MemPool_Grab(mem_pool, raw_post_bytes), doc_id,
freq, token_ivars->text, token_ivars->len);
@@ -160,7 +162,8 @@ RichPost_read_raw(RichPosting *self, InStream *instream, int32_t last_doc_id,
const uint32_t freq = (doc_code & 1)
? 1
: InStream_Read_C32(instream);
- size_t raw_post_bytes = MAX_RAW_POSTING_LEN(text_size, freq);
+ const size_t base_size = VTable_Get_Obj_Alloc_Size(RAWPOSTING);
+ size_t raw_post_bytes = MAX_RAW_POSTING_LEN(base_size, text_size, freq);
void *const allocation = MemPool_Grab(mem_pool, raw_post_bytes);
RawPosting *const raw_posting
= RawPost_new(allocation, doc_id, freq, text_buf, text_size);
http://git-wip-us.apache.org/repos/asf/lucy/blob/fb7d4fac/core/Lucy/Index/Posting/ScorePosting.c
----------------------------------------------------------------------
diff --git a/core/Lucy/Index/Posting/ScorePosting.c b/core/Lucy/Index/Posting/ScorePosting.c
index 1cba64a..f02de37 100644
--- a/core/Lucy/Index/Posting/ScorePosting.c
+++ b/core/Lucy/Index/Posting/ScorePosting.c
@@ -35,8 +35,8 @@
#define FIELD_BOOST_LEN 1
#define FREQ_MAX_LEN C32_MAX_BYTES
-#define MAX_RAW_POSTING_LEN(_text_len, _freq) \
- ( sizeof(RawPosting) \
+#define MAX_RAW_POSTING_LEN(_raw_post_size, _text_len, _freq) \
+ ( _raw_post_size \
+ _text_len /* term text content */ \
+ FIELD_BOOST_LEN /* field boost byte */ \
+ FREQ_MAX_LEN /* freq c32 */ \
@@ -83,13 +83,15 @@ ScorePost_add_inversion_to_pool(ScorePosting *self, PostingPool *post_pool,
Similarity *sim = ivars->sim;
float field_boost = doc_boost * FType_Get_Boost(type) * length_norm;
const uint8_t field_boost_byte = Sim_Encode_Norm(sim, field_boost);
+ const size_t base_size = VTable_Get_Obj_Alloc_Size(RAWPOSTING);
Token **tokens;
uint32_t freq;
Inversion_Reset(inversion);
while ((tokens = Inversion_Next_Cluster(inversion, &freq)) != NULL) {
TokenIVARS *const token_ivars = Token_IVARS(*tokens);
- uint32_t raw_post_bytes = MAX_RAW_POSTING_LEN(token_ivars->len, freq);
+ uint32_t raw_post_bytes
+ = MAX_RAW_POSTING_LEN(base_size, token_ivars->len, freq);
RawPosting *raw_posting
= RawPost_new(MemPool_Grab(mem_pool, raw_post_bytes), doc_id,
freq, token_ivars->text, token_ivars->len);
@@ -179,7 +181,8 @@ ScorePost_read_raw(ScorePosting *self, InStream *instream,
const uint32_t freq = (doc_code & 1)
? 1
: InStream_Read_C32(instream);
- size_t raw_post_bytes = MAX_RAW_POSTING_LEN(text_size, freq);
+ const size_t base_size = VTable_Get_Obj_Alloc_Size(RAWPOSTING);
+ size_t raw_post_bytes = MAX_RAW_POSTING_LEN(base_size, text_size, freq);
void *const allocation = MemPool_Grab(mem_pool, raw_post_bytes);
RawPosting *const raw_posting
= RawPost_new(allocation, doc_id, freq, text_buf, text_size);
@@ -236,8 +239,9 @@ ScorePostMatcher_init(ScorePostingMatcher *self, Similarity *sim,
float
ScorePostMatcher_score(ScorePostingMatcher* self) {
ScorePostingMatcherIVARS *const ivars = ScorePostMatcher_IVARS(self);
- ScorePosting *const posting = (ScorePosting*)ivars->posting;
- const uint32_t freq = posting->freq;
+ ScorePostingIVARS *const posting_ivars
+ = ScorePost_IVARS((ScorePosting*)ivars->posting);
+ const uint32_t freq = posting_ivars->freq;
// Calculate initial score based on frequency of term.
float score = (freq < TERMMATCHER_SCORE_CACHE_SIZE)
@@ -245,7 +249,7 @@ ScorePostMatcher_score(ScorePostingMatcher* self) {
: Sim_TF(ivars->sim, (float)freq) * ivars->weight;
// Factor in field-length normalization and doc/field/prox boost.
- score *= posting->weight;
+ score *= posting_ivars->weight;
return score;
}