X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=index%2Fextract.c;h=d4d9b691597d729bbbf7cd6727440551e5034999;hb=07bf224c54711e9b9fb09344ba2da0f02c6f67ab;hp=7f8c211ed83022134837058fe73ff067c0a545e4;hpb=75fe75c4ae6a1d4c0c6078e3cded9ad1a70d487e;p=idzebra-moved-to-github.git diff --git a/index/extract.c b/index/extract.c index 7f8c211..d4d9b69 100644 --- a/index/extract.c +++ b/index/extract.c @@ -1,4 +1,4 @@ -/* $Id: extract.c,v 1.221 2006-06-13 19:40:18 adam Exp $ +/* $Id: extract.c,v 1.223 2006-06-22 15:07:20 adam Exp $ Copyright (C) 1995-2006 Index Data ApS @@ -106,7 +106,9 @@ static void logRecord (ZebraHandle zh) } } -static void extract_add_index_string (RecWord *p, const char *str, int length); +static void extract_add_index_string (RecWord *p, + zinfo_index_category_t cat, + const char *str, int length); static void extract_set_store_data_prepare(struct recExtractCtrl *p); @@ -128,16 +130,17 @@ static void searchRecordKey(ZebraHandle zh, { int i; int ch = -1; + zinfo_index_category_t cat = zinfo_index_category_index; for (i = 0; ireg->zei, '0', index_name); + ch = zebraExplain_lookup_attr_str(zh->reg->zei, cat, '0', index_name); if (ch < 0) - ch = zebraExplain_lookup_attr_str(zh->reg->zei, 'p', index_name); + ch = zebraExplain_lookup_attr_str(zh->reg->zei, cat, 'p', index_name); if (ch < 0) - ch = zebraExplain_lookup_attr_str(zh->reg->zei, 'w', index_name); + ch = zebraExplain_lookup_attr_str(zh->reg->zei, cat, 'w', index_name); if (ch < 0) return ; @@ -403,7 +406,8 @@ static void all_matches_add(struct recExtractCtrl *ctrl) word.index_name = "allrecords"; word.index_type = 'w'; word.seqno = 1; - extract_add_index_string (&word, "", 0); + extract_add_index_string (&word, zinfo_index_category_alwaysmatches, + "", 0); } static ZEBRA_RES file_extract_record(ZebraHandle zh, @@ -1622,7 +1626,8 @@ void print_rec_keys(ZebraHandle zh, zebra_rec_keys_t reckeys) } } -static void extract_add_index_string(RecWord *p, const char *str, int length) +static void extract_add_index_string(RecWord *p, zinfo_index_category_t cat, + const char *str, int length) { struct it_key key; @@ -1633,9 +1638,9 @@ static void extract_add_index_string(RecWord *p, const char *str, int length) if (!p->index_name) return; - ch = zebraExplain_lookup_attr_str(zei, p->index_type, p->index_name); + ch = zebraExplain_lookup_attr_str(zei, cat, p->index_type, p->index_name); if (ch < 0) - ch = zebraExplain_add_attr_str(zei, p->index_type, p->index_name); + ch = zebraExplain_add_attr_str(zei, cat, p->index_type, p->index_name); key.len = 4; key.mem[0] = ch; @@ -1670,13 +1675,15 @@ static void extract_add_sort_string(RecWord *p, const char *str, int length) ZebraHandle zh = p->extractCtrl->handle; ZebraExplainInfo zei = zh->reg->zei; int ch; + zinfo_index_category_t cat = zinfo_index_category_sort; + if (!p->index_name) return; - ch = zebraExplain_lookup_attr_str(zei, p->index_type, p->index_name); + ch = zebraExplain_lookup_attr_str(zei, cat, p->index_type, p->index_name); if (ch < 0) - ch = zebraExplain_add_attr_str(zei, p->index_type, p->index_name); + ch = zebraExplain_add_attr_str(zei, cat, p->index_type, p->index_name); key.len = 4; key.mem[0] = ch; key.mem[1] = p->record_id; @@ -1708,7 +1715,19 @@ static void extract_add_string (RecWord *p, const char *string, int length) if (zebra_maps_is_sort (p->zebra_maps, p->index_type)) extract_add_sort_string (p, string, length); else - extract_add_index_string (p, string, length); + { + extract_add_index_string(p, zinfo_index_category_index, + string, length); + if (zebra_maps_is_alwaysmatches(p->zebra_maps, p->index_type)) + { + RecWord word; + memcpy(&word, p, sizeof(word)); + + word.seqno = 1; + extract_add_index_string( + &word, zinfo_index_category_alwaysmatches, "", 0); + } + } } static void extract_add_incomplete_field (RecWord *p)