| Идеалогия 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 |