Идеалогия API поиска |
Начиная с версии 4.1 FLUIdS предоставляет возможность создания индивидуального
поиска в индексных файлах системы через использование API поиска. API поиска
представляет собой набор вызовов, реализуемых в статической библиотеке
libflus.lib или динамической libflus.so (libflusd.dll)
и описываемых в заголовочных файлах
make libs |
в директориях ./lib и ./include соответственно. Все вызовы API являются потоконезависимыми, если, конечно, для каждого потока применяется свой собственный поисковик. Встроенный в API механизм блокировок отсутствует.
Ниже приведен пример написания программы с использованием API поиска:
#include <stdio.h> #include <string.h> #include <stdlib.h> #include "fluidss.h" void main( void ) { struct flu_searcher_t searcher; struct flu_searcher_result_t *result; const char *indexFile = "index.flu"; /* Проинициализируем глобальные переменные */ fluInit(); /* Подготавливаем поиск */ if( !fluSearcherInit( /* Инициализация... */ &searcher, /* поисковик */ NULL, /* ошибки игнорируем */ NULL, /* считаем, что памяти много */ NULL /* дополнительная информация */ ) || !fluSearcherSetParams( /* Параметры поиска... */ &searcher, /* поисковик */ fst, /* область поиска */ 0, /* флаги поиска */ 20, /* пропустить первых 20 результатов */ 10 /* запомнить следующие 10 результатов */ ) || !fluSearcherSetQuery( /* Установим запрос... */ &searcher, /* поисковик */ "crime and punishment" /* собственно запрос */ ) ) { fluSearcherFree( &searcher ); exit( -1 ); } /* Осуществляем поиск */ if( !fluSearcherMakeSearch( /* Поиск... */ &searcher, /* поисковик */ 1, /* ищем в одном индексном файле */ &indexFile, /* список файловых имен индексов */ NULL, /* список псевдонимов индексных файлов */ NULL /* дополнительная информация для каждого индекса */ ) { fluSearcherFree( &searcher ); exit( 1 ); } /* Печатаем результаты поиска */ fluSearcherInitResult( &searcher, fsfNoExtract); while( (result = fluSearcherNextResult( &searcher )) != NULL ) printf( "%d: %s\n", result->number+1, result->url); /* Высвобождаем память и закрываем файлы */ fluSearcherFree( &searcher ); /* Все! */ exit( 0 ); }
На предыдущую страницу | valera@sbnet.ru |