lucene-wrapper.h revision 117fb8c00336dc54bab9cfa547249df7a4970611
da14cebe459d3275048785f25bd869cb09b5307fEric Cheng#ifndef LUCENE_WRAPPER_H
da14cebe459d3275048785f25bd869cb09b5307fEric Cheng#define LUCENE_WRAPPER_H
da14cebe459d3275048785f25bd869cb09b5307fEric Cheng
da14cebe459d3275048785f25bd869cb09b5307fEric Cheng#include "fts-api-private.h"
da14cebe459d3275048785f25bd869cb09b5307fEric Cheng#include "guid.h"
da14cebe459d3275048785f25bd869cb09b5307fEric Cheng
da14cebe459d3275048785f25bd869cb09b5307fEric Chengstruct mailbox_list;
da14cebe459d3275048785f25bd869cb09b5307fEric Chengstruct fts_expunge_log;
da14cebe459d3275048785f25bd869cb09b5307fEric Chengstruct fts_lucene_settings;
da14cebe459d3275048785f25bd869cb09b5307fEric Cheng
da14cebe459d3275048785f25bd869cb09b5307fEric Cheng#define MAILBOX_GUID_HEX_LENGTH (GUID_128_SIZE*2)
da14cebe459d3275048785f25bd869cb09b5307fEric Cheng
da14cebe459d3275048785f25bd869cb09b5307fEric Chengstruct lucene_index_record {
da14cebe459d3275048785f25bd869cb09b5307fEric Cheng guid_128_t mailbox_guid;
da14cebe459d3275048785f25bd869cb09b5307fEric Cheng uint32_t uid, part_num;
da14cebe459d3275048785f25bd869cb09b5307fEric Cheng};
da14cebe459d3275048785f25bd869cb09b5307fEric Cheng
da14cebe459d3275048785f25bd869cb09b5307fEric ChengHASH_TABLE_DEFINE_TYPE(wguid_result, wchar_t *, struct fts_result *);
da14cebe459d3275048785f25bd869cb09b5307fEric Cheng
da14cebe459d3275048785f25bd869cb09b5307fEric Chengstruct lucene_index *
da14cebe459d3275048785f25bd869cb09b5307fEric Chenglucene_index_init(const char *path, struct mailbox_list *list,
1cfa752f4e24c34133009b0f6c139127a5c461deRamaswamy Tummala const struct fts_lucene_settings *set)
da14cebe459d3275048785f25bd869cb09b5307fEric Cheng ATTR_NULL(2, 3);
da14cebe459d3275048785f25bd869cb09b5307fEric Chengvoid lucene_index_deinit(struct lucene_index *index);
da14cebe459d3275048785f25bd869cb09b5307fEric Cheng
da14cebe459d3275048785f25bd869cb09b5307fEric Chengvoid lucene_index_select_mailbox(struct lucene_index *index,
da14cebe459d3275048785f25bd869cb09b5307fEric Cheng const wchar_t guid[MAILBOX_GUID_HEX_LENGTH]);
da14cebe459d3275048785f25bd869cb09b5307fEric Chengvoid lucene_index_unselect_mailbox(struct lucene_index *index);
4eaa471005973e11a6110b69fe990530b3b95a38Rishi Srivatsavaiint lucene_index_get_last_uid(struct lucene_index *index, uint32_t *last_uid_r);
2b24ab6b3865caeede9eeb9db6b83e1d89dcd1eaSebastien Royint lucene_index_get_doc_count(struct lucene_index *index, uint32_t *count_r);
da14cebe459d3275048785f25bd869cb09b5307fEric Cheng
da14cebe459d3275048785f25bd869cb09b5307fEric Chengint lucene_index_build_init(struct lucene_index *index);
da14cebe459d3275048785f25bd869cb09b5307fEric Chengint lucene_index_build_more(struct lucene_index *index, uint32_t uid,
da14cebe459d3275048785f25bd869cb09b5307fEric Cheng uint32_t part_num, const unsigned char *data,
da14cebe459d3275048785f25bd869cb09b5307fEric Cheng size_t size, const char *hdr_name);
da14cebe459d3275048785f25bd869cb09b5307fEric Chengint lucene_index_build_deinit(struct lucene_index *index);
da14cebe459d3275048785f25bd869cb09b5307fEric Cheng
da14cebe459d3275048785f25bd869cb09b5307fEric Chengvoid lucene_index_close(struct lucene_index *index);
da14cebe459d3275048785f25bd869cb09b5307fEric Chengint lucene_index_rescan(struct lucene_index *index);
da14cebe459d3275048785f25bd869cb09b5307fEric Chengint lucene_index_expunge_from_log(struct lucene_index *index,
da14cebe459d3275048785f25bd869cb09b5307fEric Cheng struct fts_expunge_log *log);
da14cebe459d3275048785f25bd869cb09b5307fEric Chengint lucene_index_optimize(struct lucene_index *index);
da14cebe459d3275048785f25bd869cb09b5307fEric Cheng
da14cebe459d3275048785f25bd869cb09b5307fEric Chengint lucene_index_lookup(struct lucene_index *index,
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai struct mail_search_arg *args,
4eaa471005973e11a6110b69fe990530b3b95a38Rishi Srivatsavai enum fts_lookup_flags flags,
2b24ab6b3865caeede9eeb9db6b83e1d89dcd1eaSebastien Roy struct fts_result *result);
f689bed18bbb72c93b14a451e959b18f7ccfb7d1Rishi Srivatsavai
1cfa752f4e24c34133009b0f6c139127a5c461deRamaswamy Tummalaint lucene_index_lookup_multi(struct lucene_index *index,
da14cebe459d3275048785f25bd869cb09b5307fEric Cheng HASH_TABLE_TYPE(wguid_result) guids,
da14cebe459d3275048785f25bd869cb09b5307fEric Cheng struct mail_search_arg *args,
da14cebe459d3275048785f25bd869cb09b5307fEric Cheng enum fts_lookup_flags flags,
da14cebe459d3275048785f25bd869cb09b5307fEric Cheng struct fts_multi_result *result);
4eaa471005973e11a6110b69fe990530b3b95a38Rishi Srivatsavai
1cfa752f4e24c34133009b0f6c139127a5c461deRamaswamy Tummalastruct lucene_index_iter *
da14cebe459d3275048785f25bd869cb09b5307fEric Chenglucene_index_iter_init(struct lucene_index *index);
da14cebe459d3275048785f25bd869cb09b5307fEric Chengconst struct lucene_index_record *
da14cebe459d3275048785f25bd869cb09b5307fEric Chenglucene_index_iter_next(struct lucene_index_iter *iter);
da14cebe459d3275048785f25bd869cb09b5307fEric Chengint lucene_index_iter_deinit(struct lucene_index_iter **iter);
da14cebe459d3275048785f25bd869cb09b5307fEric Cheng
da14cebe459d3275048785f25bd869cb09b5307fEric Cheng/* internal: */
da14cebe459d3275048785f25bd869cb09b5307fEric Chengvoid lucene_utf8_n_to_tchar(const unsigned char *src, size_t srcsize,
da14cebe459d3275048785f25bd869cb09b5307fEric Cheng wchar_t *dest, size_t destsize);
da14cebe459d3275048785f25bd869cb09b5307fEric Cheng
da14cebe459d3275048785f25bd869cb09b5307fEric Chengvoid lucene_shutdown(void);
da14cebe459d3275048785f25bd869cb09b5307fEric Cheng
da14cebe459d3275048785f25bd869cb09b5307fEric Cheng#endif
da14cebe459d3275048785f25bd869cb09b5307fEric Cheng