/* File : swish_e.c */ #include #include #include extern "C" { // http://www.swish-e.org/current/docs/SWISH-LIBRARY.html void *SwishInit(const char* file); void *SwishError(void *handle); void SwishClose(void *handle); void *SwishNext(void *handle); void *SwishSeek(void *handle,int); int SwishSearch(void *handle,const char *,int,void *,void *); char *SwishResultPropertyStr(void *handle, void *result, char *property); char *SwishErrorString(void *handle); } vector search(string index, string query) { vector result; void *handle=SwishInit(index.c_str()); if (SwishError(handle)) { fprintf(stderr, "Failed to connect. %s\n", SwishErrorString(handle)); } else { void *match; SwishSearch(handle, query.c_str(), 1, NULL, NULL); while ((match=SwishNext(handle))) { result.push_back(SwishResultPropertyStr(handle, match, "swishdocpath")); } SwishClose(handle); } return result; }