lucene-wrapper.h revision a10ed8c47534b4c6b6bf2711ccfe577e720a47b4
5f5870385cff47efd2f58e7892f251cf13761528Timo Sirainen#ifndef LUCENE_WRAPPER_H
8d3278a82b964217d95c340ec6f82037cdc59d19Timo Sirainen#define LUCENE_WRAPPER_H
8d3278a82b964217d95c340ec6f82037cdc59d19Timo Sirainen
8d3278a82b964217d95c340ec6f82037cdc59d19Timo Sirainen#include "fts-api-private.h"
8d3278a82b964217d95c340ec6f82037cdc59d19Timo Sirainen#include "guid.h"
96d19229e5f322411eb84446e5477d8170cfa5afTimo Sirainen
d39a04db2f4d0599cb9b5f03a9aa10a3c234453cTimo Sirainenstruct hash_table;
f7423cbbd9dea363a5df18ebb96da055a977ae79Timo Sirainenstruct mailbox_list;
8d3278a82b964217d95c340ec6f82037cdc59d19Timo Sirainenstruct fts_expunge_log;
8d3278a82b964217d95c340ec6f82037cdc59d19Timo Sirainenstruct fts_lucene_settings;
a3fe8c0c54d87822f4b4f8f0d10caac611861b2bTimo Sirainen
8d3278a82b964217d95c340ec6f82037cdc59d19Timo Sirainen#define MAILBOX_GUID_HEX_LENGTH (GUID_128_SIZE*2)
8d3278a82b964217d95c340ec6f82037cdc59d19Timo Sirainen
c99fe55d4535d839a6ad0735c4719e076a1adb2cTimo Sirainenstruct lucene_index_record {
8d3278a82b964217d95c340ec6f82037cdc59d19Timo Sirainen guid_128_t mailbox_guid;
96d19229e5f322411eb84446e5477d8170cfa5afTimo Sirainen uint32_t uid;
7891c8e6debdcfec552cb1beea2a0230fe89957bTimo Sirainen};
8d3278a82b964217d95c340ec6f82037cdc59d19Timo Sirainen
8d3278a82b964217d95c340ec6f82037cdc59d19Timo Sirainenstruct lucene_index *
8d3278a82b964217d95c340ec6f82037cdc59d19Timo Sirainenlucene_index_init(const char *path, struct mailbox_list *list,
8d3278a82b964217d95c340ec6f82037cdc59d19Timo Sirainen const struct fts_lucene_settings *set)
8d3278a82b964217d95c340ec6f82037cdc59d19Timo Sirainen ATTR_NULL(2, 3);
d176f84ce5ca2073f4dfbafb457b9c74f6bf0d76Timo Sirainenvoid lucene_index_deinit(struct lucene_index *index);
8d3278a82b964217d95c340ec6f82037cdc59d19Timo Sirainen
8d3278a82b964217d95c340ec6f82037cdc59d19Timo Sirainenvoid lucene_index_select_mailbox(struct lucene_index *index,
8d3278a82b964217d95c340ec6f82037cdc59d19Timo Sirainen const wchar_t guid[MAILBOX_GUID_HEX_LENGTH]);
8d3278a82b964217d95c340ec6f82037cdc59d19Timo Sirainenvoid lucene_index_unselect_mailbox(struct lucene_index *index);
8d3278a82b964217d95c340ec6f82037cdc59d19Timo Sirainenint lucene_index_get_last_uid(struct lucene_index *index, uint32_t *last_uid_r);
8d3278a82b964217d95c340ec6f82037cdc59d19Timo Sirainenint lucene_index_get_doc_count(struct lucene_index *index, uint32_t *count_r);
8d3278a82b964217d95c340ec6f82037cdc59d19Timo Sirainen
8d3278a82b964217d95c340ec6f82037cdc59d19Timo Sirainenint lucene_index_build_init(struct lucene_index *index);
8d3278a82b964217d95c340ec6f82037cdc59d19Timo Sirainenint lucene_index_build_more(struct lucene_index *index, uint32_t uid,
8d3278a82b964217d95c340ec6f82037cdc59d19Timo Sirainen const unsigned char *data, size_t size,
cf0ad1a0bddb0787f3d7b408a96d721a8b2a98a3Timo Sirainen const char *hdr_name);
cf0ad1a0bddb0787f3d7b408a96d721a8b2a98a3Timo Sirainenint lucene_index_build_deinit(struct lucene_index *index);
cf0ad1a0bddb0787f3d7b408a96d721a8b2a98a3Timo Sirainen
cf0ad1a0bddb0787f3d7b408a96d721a8b2a98a3Timo Sirainenvoid lucene_index_close(struct lucene_index *index);
cf0ad1a0bddb0787f3d7b408a96d721a8b2a98a3Timo Sirainenint lucene_index_rescan(struct lucene_index *index);
86791365b10f45982c88e70f2eb94fd6c3fea151Timo Sirainenint lucene_index_expunge_from_log(struct lucene_index *index,
86791365b10f45982c88e70f2eb94fd6c3fea151Timo Sirainen struct fts_expunge_log *log);
86791365b10f45982c88e70f2eb94fd6c3fea151Timo Sirainenint lucene_index_optimize(struct lucene_index *index);
86791365b10f45982c88e70f2eb94fd6c3fea151Timo Sirainen
4d4d6d4745682790c20d759ba93dbea46b812c5dTimo Sirainenint lucene_index_lookup(struct lucene_index *index,
4d4d6d4745682790c20d759ba93dbea46b812c5dTimo Sirainen struct mail_search_arg *args, bool and_args,
bd20ef9d5c639faf470912ab94e6e6627d3eaebaTimo Sirainen struct fts_result *result);
cf0ad1a0bddb0787f3d7b408a96d721a8b2a98a3Timo Sirainen
d176f84ce5ca2073f4dfbafb457b9c74f6bf0d76Timo Sirainenint lucene_index_lookup_multi(struct lucene_index *index,
8d3278a82b964217d95c340ec6f82037cdc59d19Timo Sirainen struct hash_table *guids,
8d3278a82b964217d95c340ec6f82037cdc59d19Timo Sirainen struct mail_search_arg *args, bool and_args,
104318260228780a5c6b3181b3401e8e504e2776Timo Sirainen struct fts_multi_result *result);
8d3278a82b964217d95c340ec6f82037cdc59d19Timo Sirainen
8d3278a82b964217d95c340ec6f82037cdc59d19Timo Sirainenstruct lucene_index_iter *
8d3278a82b964217d95c340ec6f82037cdc59d19Timo Sirainenlucene_index_iter_init(struct lucene_index *index);
8d3278a82b964217d95c340ec6f82037cdc59d19Timo Sirainenconst struct lucene_index_record *
8d3278a82b964217d95c340ec6f82037cdc59d19Timo Sirainenlucene_index_iter_next(struct lucene_index_iter *iter);
8d3278a82b964217d95c340ec6f82037cdc59d19Timo Sirainenint lucene_index_iter_deinit(struct lucene_index_iter **iter);
b437874782ad048daa155e0ac863c2326c3f5e43Timo Sirainen
b437874782ad048daa155e0ac863c2326c3f5e43Timo Sirainen/* internal: */
8d3278a82b964217d95c340ec6f82037cdc59d19Timo Sirainenvoid lucene_utf8_n_to_tchar(const unsigned char *src, size_t srcsize,
8d3278a82b964217d95c340ec6f82037cdc59d19Timo Sirainen wchar_t *dest, size_t destsize);
8d3278a82b964217d95c340ec6f82037cdc59d19Timo Sirainen
8d3278a82b964217d95c340ec6f82037cdc59d19Timo Sirainenvoid lucene_shutdown(void);
8d3278a82b964217d95c340ec6f82037cdc59d19Timo Sirainen
f46363f428d8f2784146d36692b21936a48a7006Timo Sirainen#endif
f46363f428d8f2784146d36692b21936a48a7006Timo Sirainen