postgresql/src/include/tsearch/ts_public.h

117 lines
2.4 KiB
C
Raw Normal View History

/*-------------------------------------------------------------------------
*
* ts_public.h
* Public interface to various tsearch modules, such as
* parsers and dictionaries.
*
* Copyright (c) 1998-2007, PostgreSQL Global Development Group
*
2007-11-15 22:14:46 +01:00
* $PostgreSQL: pgsql/src/include/tsearch/ts_public.h,v 1.6 2007/11/15 21:14:45 momjian Exp $
*
*-------------------------------------------------------------------------
*/
#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;
2007-11-15 22:14:46 +01:00
} LexDescr;
/*
* Interface to headline generator
*/
typedef struct
{
uint32 selected:1,
in:1,
replace:1,
repeated:1,
unused:4,
type:8,
len:16;
char *word;
2007-11-15 22:14:46 +01:00
QueryOperand *item;
} HeadlineWordEntry;
typedef struct
{
HeadlineWordEntry *words;
int4 lenwords;
int4 curwords;
char *startsel;
char *stopsel;
int2 startsellen;
int2 stopsellen;
2007-11-15 22:14:46 +01:00
} HeadlineParsedText;
/*
* Common useful things for tsearch subsystem
*/
extern char *get_tsearch_config_filename(const char *basename,
2007-11-15 22:14:46 +01:00
const char *extension);
extern char *pnstrdup(const char *in, int len);
/*
* Often useful stopword list management
*/
typedef struct
{
int len;
char **stop;
2007-11-15 22:14:46 +01:00
} StopList;
2007-11-15 22:14:46 +01:00
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;
2007-11-15 22:14:46 +01:00
} TSLexeme;
#define TSL_ADDPOS 0x01
/*
* 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; /* internal dict state between calls with
* getnext == true */
2007-11-15 22:14:46 +01:00
} DictSubState;
#endif /* _PG_TS_PUBLIC_H_ */