* fix sorting, some small cleanups

This commit is contained in:
Dirk-Jan C. Binnema 2010-11-23 23:52:37 +02:00
parent d89b1d97fb
commit 21c01f156d
4 changed files with 14 additions and 26 deletions

View File

@ -79,8 +79,7 @@ sort_field_from_string (const char* fieldstr)
if (mfid == MU_MSG_FIELD_ID_NONE &&
strlen(fieldstr) == 1)
mfid = mu_msg_field_id_from_shortcut(fieldstr[0],
FALSE);
FALSE);
if (mfid == MU_MSG_FIELD_ID_NONE)
g_warning ("Not a valid sort field: '%s'\n",
fieldstr);
@ -144,7 +143,8 @@ run_query (MuQuery *xapian, const gchar *query, MuConfigOptions *opts)
return FALSE;
}
iter = mu_query_run (xapian, query, sortid, !opts->descending, 0);
iter = mu_query_run (xapian, query, sortid,
opts->descending ? FALSE : TRUE, 0);
if (!iter) {
g_printerr ("error: running query failed\n");
return FALSE;

View File

@ -122,9 +122,11 @@ set_group_find_defaults (MuConfigOptions *opts)
* date-from-subject, and sort descending by date. If fields
* *are* specified, we sort in ascending order. */
if (!opts->fields) {
opts->descending = TRUE;
opts->fields = "d f s";
opts->sortfield = "d";
if (!opts->sortfield) {
opts->sortfield = "d";
opts->descending = TRUE;
}
}
if (opts->linksdir) {

View File

@ -213,14 +213,6 @@ mu_msg_iter_get_field_numeric (MuMsgIter *iter, MuMsgFieldId mfid)
} MU_XAPIAN_CATCH_BLOCK_RETURN(static_cast<gint64>(-1));
}
// static const gchar*
// get_field (MuMsgIter *iter, MuMsgFieldId mfid)
// {
// return mu_msg_iter_get_field(iter, mfid);
// }
static long
get_field_number (MuMsgIter *iter, MuMsgFieldId mfid)
{

View File

@ -130,7 +130,6 @@ static void add_prefix (MuMsgFieldId field, Xapian::QueryParser* qparser);
struct _MuQuery {
Xapian::Database* _db;
Xapian::QueryParser* _qparser;
Xapian::Sorter* _sorters[MU_MSG_FIELD_TYPE_NUM];
Xapian::ValueRangeProcessor* _range_processor;
};
@ -151,7 +150,6 @@ init_mu_query (MuQuery *mqx, const char* dbpath)
mqx->_qparser->add_valuerangeprocessor
(mqx->_range_processor);
memset (mqx->_sorters, 0, sizeof(mqx->_sorters));
mu_msg_field_foreach ((MuMsgFieldForEachFunc)add_prefix,
(gpointer)mqx->_qparser);
@ -176,10 +174,7 @@ uninit_mu_query (MuQuery *mqx)
delete mqx->_db;
delete mqx->_qparser;
delete mqx->_range_processor;
for (int i = 0; i != MU_MSG_FIELD_TYPE_NUM; ++i)
delete mqx->_sorters[i];
} MU_XAPIAN_CATCH_BLOCK;
}
@ -383,8 +378,8 @@ mu_query_run (MuQuery *self, const char* searchexpr,
g_return_val_if_fail (self, NULL);
g_return_val_if_fail (searchexpr, NULL);
g_return_val_if_fail (mu_msg_field_id_is_valid (sortfieldid) ||
sortfieldid == MU_MSG_FIELD_ID_NONE, NULL);
sortfieldid == MU_MSG_FIELD_ID_NONE,
NULL);
try {
char *preprocessed;
int err (0);
@ -403,15 +398,14 @@ mu_query_run (MuQuery *self, const char* searchexpr,
if (batchsize == 0)
batchsize = self->_db->get_doccount();
if (sortfieldid != MU_MSG_FIELD_ID_NONE)
enq.set_sort_by_value (
(Xapian::valueno)sortfieldid,
ascending ? true : false);
if (sortfieldid != MU_MSG_FIELD_ID_NONE)
enq.set_sort_by_value ((Xapian::valueno)sortfieldid,
ascending ? true : false);
enq.set_query(q);
enq.set_cutoff(0,0);
return mu_msg_iter_new (enq, batchsize);
} MU_XAPIAN_CATCH_BLOCK_RETURN(NULL);