init
This commit is contained in:
130
pg_include/tsearch/ts_public.h
Executable file
130
pg_include/tsearch/ts_public.h
Executable file
@@ -0,0 +1,130 @@
|
||||
/*-------------------------------------------------------------------------
|
||||
*
|
||||
* ts_public.h
|
||||
* Public interface to various tsearch modules, such as
|
||||
* parsers and dictionaries.
|
||||
*
|
||||
* Copyright (c) 1998-2012, 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 current variant of split word. For example the Norwegian
|
||||
* word 'fotballklubber' has two variants to split: ( fotball, klubb )
|
||||
* and ( fot, ball, klubb ). So, dictionary should return:
|
||||
*
|
||||
* nvariant lexeme
|
||||
* 1 fotball
|
||||
* 1 klubb
|
||||
* 2 fot
|
||||
* 2 ball
|
||||
* 2 klubb
|
||||
*
|
||||
* In general, a TSLexeme will be considered to belong to the same split
|
||||
* variant as the previous one if they have the same nvariant value.
|
||||
* The exact values don't matter, only changes from one lexeme to next.
|
||||
*----------
|
||||
*/
|
||||
uint16 nvariant;
|
||||
|
||||
uint16 flags; /* See flag bits below */
|
||||
|
||||
char *lexeme; /* C string */
|
||||
} TSLexeme;
|
||||
|
||||
/* Flag bits that can appear in TSLexeme.flags */
|
||||
#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_ */
|
||||
Reference in New Issue
Block a user