-
-RSET rpn_search(ZebraHandle zh, NMEM nmem, NMEM rset_nmem,
- Z_RPNQuery *rpn, int num_bases, char **basenames,
- const char *setname,
- ZebraSet sset)
-{
- RSET rset;
- oident *attrset;
- oid_value attributeSet;
- Z_SortKeySpecList *sort_sequence;
- int sort_status, i;
-
- zh->errCode = 0;
- zh->errString = NULL;
- zh->hits = 0;
-
- sort_sequence = (Z_SortKeySpecList *)
- nmem_malloc(nmem, sizeof(*sort_sequence));
- sort_sequence->num_specs = 10; /* FIXME - Hard-coded number */
- sort_sequence->specs = (Z_SortKeySpec **)
- nmem_malloc(nmem, sort_sequence->num_specs *
- sizeof(*sort_sequence->specs));
- for (i = 0; i<sort_sequence->num_specs; i++)
- sort_sequence->specs[i] = 0;
-
- attrset = oid_getentbyoid (rpn->attributeSetId);
- attributeSet = attrset->value;
- rset = rpn_search_structure (zh, rpn->RPNStructure, attributeSet,
- nmem, rset_nmem,
- sort_sequence, num_bases, basenames);
- if (!rset)
- return 0;
-
- if (zh->errCode)
- yaz_log(YLOG_DEBUG, "search error: %d", zh->errCode);
-
- for (i = 0; sort_sequence->specs[i]; i++)
- ;
- sort_sequence->num_specs = i;
- if (!i)
- resultSetRank (zh, sset, rset, rset_nmem);
- else
- {
- yaz_log(YLOG_DEBUG, "resultSetSortSingle in rpn_search");
- resultSetSortSingle (zh, nmem, sset, rset,
- sort_sequence, &sort_status);
- if (zh->errCode)
- {
- yaz_log(YLOG_DEBUG, "resultSetSortSingle status = %d", zh->errCode);
- }
- }
- return rset;
-}
-