12 #ifndef _PG_TS_UTILS_H_ 13 #define _PG_TS_UTILS_H_ 28 #define P_TSV_OPR_IS_DELIM (1 << 0) 29 #define P_TSV_IS_TSQUERY (1 << 1) 30 #define P_TSV_IS_WEB (1 << 2) 35 char **token,
int *
len,
41 #define ISOPERATOR(x) \ 42 ( pg_mblen(x) == 1 && ( *(x) == '!' || \ 56 char *token,
int tokenlen,
61 #define P_TSQ_PLAIN (1 << 0) 62 #define P_TSQ_WEB (1 << 1) 71 char *strval,
int lenval,
int16 weight,
bool prefix);
184 #define TS_EXEC_EMPTY (0x00) 191 #define TS_EXEC_SKIP_NOT (0x01) 198 #define TS_EXEC_PHRASE_NO_POS (0x02) 218 #define TSearchStrategyNumber 1 219 #define TSearchWithClassStrategyNumber 2 238 #define QTN_NEEDFREE 0x01 239 #define QTN_NOCHANGE 0x02 240 #define QTN_WORDFREE 0x04 244 #define TSQS_SIGLEN (sizeof(TSQuerySign)*BITS_PER_BYTE) 246 #define TSQuerySignGetDatum(X) Int64GetDatum((int64) (X)) 247 #define DatumGetTSQuerySign(X) ((TSQuerySign) DatumGetInt64(X)) 248 #define PG_RETURN_TSQUERYSIGN(X) return TSQuerySignGetDatum(X) 249 #define PG_GETARG_TSQUERYSIGN(n) DatumGetTSQuerySign(PG_GETARG_DATUM(n))
QTNode * QTNCopy(QTNode *in)
TSQuery cleanup_tsquery_stopwords(TSQuery in)
struct TSQueryParserStateData * TSQueryParserState
void pushOperator(TSQueryParserState state, int8 oper, int16 distance)
QTNode * QT2QTN(QueryItem *in, char *operand)
bool QTNEq(QTNode *a, QTNode *b)
QueryItem * clean_NOT(QueryItem *ptr, int32 *len)
TSVectorParseState init_tsvector_parser(char *input, int flags)
struct TSVectorParseStateData * TSVectorParseState
void QTNClearFlags(QTNode *in, uint32 flags)
void(* PushFunction)(Datum opaque, TSQueryParserState state, char *token, int tokenlen, int16 tokenweights, bool prefix)
void QTNTernary(QTNode *in)
int32 tsCompareString(char *a, int lena, char *b, int lenb, bool prefix)
void QTNBinary(QTNode *in)
bool tsquery_requires_match(QueryItem *curitem)
void hlparsetext(Oid cfgId, HeadlineParsedText *prs, TSQuery query, char *buf, int32 buflen)
TSVector make_tsvector(ParsedText *prs)
TSTernaryValue TS_execute_ternary(QueryItem *curitem, void *arg, uint32 flags, TSExecuteCallback chkcond)
void pushStop(TSQueryParserState state)
TSQuery QTN2QT(QTNode *in)
void parsetext(Oid cfgId, ParsedText *prs, char *buf, int32 buflen)
void reset_tsvector_parser(TSVectorParseState state, char *input)
bool TS_execute(QueryItem *curitem, void *arg, uint32 flags, TSExecuteCallback chkcond)
bool gettoken_tsvector(TSVectorParseState state, char **token, int *len, WordEntryPos **pos, int *poslen, char **endptr)
TSTernaryValue(* TSExecuteCallback)(void *arg, QueryOperand *val, ExecPhraseData *data)
QTNode * findsubquery(QTNode *root, QTNode *ex, QTNode *subs, bool *isfind)
struct ExecPhraseData ExecPhraseData
int QTNodeCompare(QTNode *an, QTNode *bn)
text * generateHeadline(HeadlineParsedText *prs)
void pushValue(TSQueryParserState state, char *strval, int lenval, int16 weight, bool prefix)
Operator oper(ParseState *pstate, List *opname, Oid ltypeId, Oid rtypeId, bool noError, int location)
TSQuerySign makeTSQuerySign(TSQuery a)
void close_tsvector_parser(TSVectorParseState state)
TSQuery parse_tsquery(char *buf, PushFunction pushval, Datum opaque, int flags)