mirror of https://github.com/djcb/mu.git
* fix sorting, some small cleanups
This commit is contained in:
parent
d89b1d97fb
commit
21c01f156d
|
@ -79,8 +79,7 @@ sort_field_from_string (const char* fieldstr)
|
||||||
if (mfid == MU_MSG_FIELD_ID_NONE &&
|
if (mfid == MU_MSG_FIELD_ID_NONE &&
|
||||||
strlen(fieldstr) == 1)
|
strlen(fieldstr) == 1)
|
||||||
mfid = mu_msg_field_id_from_shortcut(fieldstr[0],
|
mfid = mu_msg_field_id_from_shortcut(fieldstr[0],
|
||||||
FALSE);
|
FALSE);
|
||||||
|
|
||||||
if (mfid == MU_MSG_FIELD_ID_NONE)
|
if (mfid == MU_MSG_FIELD_ID_NONE)
|
||||||
g_warning ("Not a valid sort field: '%s'\n",
|
g_warning ("Not a valid sort field: '%s'\n",
|
||||||
fieldstr);
|
fieldstr);
|
||||||
|
@ -144,7 +143,8 @@ run_query (MuQuery *xapian, const gchar *query, MuConfigOptions *opts)
|
||||||
return FALSE;
|
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) {
|
if (!iter) {
|
||||||
g_printerr ("error: running query failed\n");
|
g_printerr ("error: running query failed\n");
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
|
@ -122,9 +122,11 @@ set_group_find_defaults (MuConfigOptions *opts)
|
||||||
* date-from-subject, and sort descending by date. If fields
|
* date-from-subject, and sort descending by date. If fields
|
||||||
* *are* specified, we sort in ascending order. */
|
* *are* specified, we sort in ascending order. */
|
||||||
if (!opts->fields) {
|
if (!opts->fields) {
|
||||||
opts->descending = TRUE;
|
|
||||||
opts->fields = "d f s";
|
opts->fields = "d f s";
|
||||||
opts->sortfield = "d";
|
if (!opts->sortfield) {
|
||||||
|
opts->sortfield = "d";
|
||||||
|
opts->descending = TRUE;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (opts->linksdir) {
|
if (opts->linksdir) {
|
||||||
|
|
|
@ -213,14 +213,6 @@ mu_msg_iter_get_field_numeric (MuMsgIter *iter, MuMsgFieldId mfid)
|
||||||
} MU_XAPIAN_CATCH_BLOCK_RETURN(static_cast<gint64>(-1));
|
} 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
|
static long
|
||||||
get_field_number (MuMsgIter *iter, MuMsgFieldId mfid)
|
get_field_number (MuMsgIter *iter, MuMsgFieldId mfid)
|
||||||
{
|
{
|
||||||
|
|
|
@ -130,7 +130,6 @@ static void add_prefix (MuMsgFieldId field, Xapian::QueryParser* qparser);
|
||||||
struct _MuQuery {
|
struct _MuQuery {
|
||||||
Xapian::Database* _db;
|
Xapian::Database* _db;
|
||||||
Xapian::QueryParser* _qparser;
|
Xapian::QueryParser* _qparser;
|
||||||
Xapian::Sorter* _sorters[MU_MSG_FIELD_TYPE_NUM];
|
|
||||||
Xapian::ValueRangeProcessor* _range_processor;
|
Xapian::ValueRangeProcessor* _range_processor;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -151,7 +150,6 @@ init_mu_query (MuQuery *mqx, const char* dbpath)
|
||||||
mqx->_qparser->add_valuerangeprocessor
|
mqx->_qparser->add_valuerangeprocessor
|
||||||
(mqx->_range_processor);
|
(mqx->_range_processor);
|
||||||
|
|
||||||
memset (mqx->_sorters, 0, sizeof(mqx->_sorters));
|
|
||||||
mu_msg_field_foreach ((MuMsgFieldForEachFunc)add_prefix,
|
mu_msg_field_foreach ((MuMsgFieldForEachFunc)add_prefix,
|
||||||
(gpointer)mqx->_qparser);
|
(gpointer)mqx->_qparser);
|
||||||
|
|
||||||
|
@ -176,10 +174,7 @@ uninit_mu_query (MuQuery *mqx)
|
||||||
delete mqx->_db;
|
delete mqx->_db;
|
||||||
delete mqx->_qparser;
|
delete mqx->_qparser;
|
||||||
delete mqx->_range_processor;
|
delete mqx->_range_processor;
|
||||||
|
|
||||||
for (int i = 0; i != MU_MSG_FIELD_TYPE_NUM; ++i)
|
|
||||||
delete mqx->_sorters[i];
|
|
||||||
|
|
||||||
} MU_XAPIAN_CATCH_BLOCK;
|
} 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 (self, NULL);
|
||||||
g_return_val_if_fail (searchexpr, NULL);
|
g_return_val_if_fail (searchexpr, NULL);
|
||||||
g_return_val_if_fail (mu_msg_field_id_is_valid (sortfieldid) ||
|
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 {
|
try {
|
||||||
char *preprocessed;
|
char *preprocessed;
|
||||||
int err (0);
|
int err (0);
|
||||||
|
@ -403,15 +398,14 @@ mu_query_run (MuQuery *self, const char* searchexpr,
|
||||||
|
|
||||||
if (batchsize == 0)
|
if (batchsize == 0)
|
||||||
batchsize = self->_db->get_doccount();
|
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_query(q);
|
||||||
enq.set_cutoff(0,0);
|
enq.set_cutoff(0,0);
|
||||||
|
|
||||||
|
|
||||||
return mu_msg_iter_new (enq, batchsize);
|
return mu_msg_iter_new (enq, batchsize);
|
||||||
|
|
||||||
} MU_XAPIAN_CATCH_BLOCK_RETURN(NULL);
|
} MU_XAPIAN_CATCH_BLOCK_RETURN(NULL);
|
||||||
|
|
Loading…
Reference in New Issue