mirror of
https://github.com/simtactics/niotso.git
synced 2025-04-01 23:44:02 +00:00
119 lines
2.4 KiB
C
119 lines
2.4 KiB
C
/*-------------------------------------------------------------------------
|
|
*
|
|
* ts_public.h
|
|
* Public interface to various tsearch modules, such as
|
|
* parsers and dictionaries.
|
|
*
|
|
* Copyright (c) 1998-2011, PostgreSQL Global Development Group
|
|
*
|
|
* src/include/tsearch/ts_public.h
|
|
*
|
|
*-------------------------------------------------------------------------
|
|
*/
|
|
#ifndef _PG_TS_PUBLIC_H_
|
|
#define _PG_TS_PUBLIC_H_
|
|
|
|
#include "tsearch/ts_type.h"
|
|
|
|
/*
|
|
* Parser's framework
|
|
*/
|
|
|
|
/*
|
|
* returning type for prslextype method of parser
|
|
*/
|
|
typedef struct
|
|
{
|
|
int lexid;
|
|
char *alias;
|
|
char *descr;
|
|
} LexDescr;
|
|
|
|
/*
|
|
* Interface to headline generator
|
|
*/
|
|
typedef struct
|
|
{
|
|
uint32 selected:1,
|
|
in:1,
|
|
replace:1,
|
|
repeated:1,
|
|
skip:1,
|
|
unused:3,
|
|
type:8,
|
|
len:16;
|
|
char *word;
|
|
QueryOperand *item;
|
|
} HeadlineWordEntry;
|
|
|
|
typedef struct
|
|
{
|
|
HeadlineWordEntry *words;
|
|
int4 lenwords;
|
|
int4 curwords;
|
|
char *startsel;
|
|
char *stopsel;
|
|
char *fragdelim;
|
|
int2 startsellen;
|
|
int2 stopsellen;
|
|
int2 fragdelimlen;
|
|
} HeadlineParsedText;
|
|
|
|
/*
|
|
* Common useful things for tsearch subsystem
|
|
*/
|
|
extern char *get_tsearch_config_filename(const char *basename,
|
|
const char *extension);
|
|
|
|
/*
|
|
* Often useful stopword list management
|
|
*/
|
|
typedef struct
|
|
{
|
|
int len;
|
|
char **stop;
|
|
} StopList;
|
|
|
|
extern void readstoplist(const char *fname, StopList *s,
|
|
char *(*wordop) (const char *));
|
|
extern bool searchstoplist(StopList *s, char *key);
|
|
|
|
/*
|
|
* Interface with dictionaries
|
|
*/
|
|
|
|
/* return struct for any lexize function */
|
|
typedef struct
|
|
{
|
|
/*
|
|
* number of variant of split word , for example Word 'fotballklubber'
|
|
* (norwegian) has two varian to split: ( fotball, klubb ) and ( fot,
|
|
* ball, klubb ). So, dictionary should return: nvariant lexeme 1 fotball
|
|
* 1 klubb 2 fot 2 ball 2 klubb
|
|
*/
|
|
uint16 nvariant;
|
|
|
|
uint16 flags;
|
|
|
|
/* C-string */
|
|
char *lexeme;
|
|
} TSLexeme;
|
|
|
|
#define TSL_ADDPOS 0x01
|
|
#define TSL_PREFIX 0x02
|
|
#define TSL_FILTER 0x04
|
|
|
|
/*
|
|
* Struct for supporting complex dictionaries like thesaurus.
|
|
* 4th argument for dictlexize method is a pointer to this
|
|
*/
|
|
typedef struct
|
|
{
|
|
bool isend; /* in: marks for lexize_info about text end is
|
|
* reached */
|
|
bool getnext; /* out: dict wants next lexeme */
|
|
void *private_state; /* internal dict state between calls with
|
|
* getnext == true */
|
|
} DictSubState;
|
|
|
|
#endif /* _PG_TS_PUBLIC_H_ */
|