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))
Operator oper(ParseState *pstate, List *opname, Oid ltypeId, Oid rtypeId, bool noError, int location)
void reset_tsvector_parser(TSVectorParseState state, char *input)
void QTNClearFlags(QTNode *in, uint32 flags)
int QTNodeCompare(QTNode *an, QTNode *bn)
struct ExecPhraseData ExecPhraseData
QTNode * QTNCopy(QTNode *in)
void pushValue(TSQueryParserState state, char *strval, int lenval, int16 weight, bool prefix)
bool TS_execute(QueryItem *curitem, void *arg, uint32 flags, TSExecuteCallback chkcond)
QTNode * QT2QTN(QueryItem *in, char *operand)
bool gettoken_tsvector(TSVectorParseState state, char **token, int *len, WordEntryPos **pos, int *poslen, char **endptr)
void close_tsvector_parser(TSVectorParseState state)
struct TSVectorParseStateData * TSVectorParseState
TSQuerySign makeTSQuerySign(TSQuery a)
void parsetext(Oid cfgId, ParsedText *prs, char *buf, int32 buflen)
TSQuery cleanup_tsquery_stopwords(TSQuery in)
void pushOperator(TSQueryParserState state, int8 oper, int16 distance)
void QTNTernary(QTNode *in)
int32 tsCompareString(char *a, int lena, char *b, int lenb, bool prefix)
QTNode * findsubquery(QTNode *root, QTNode *ex, QTNode *subs, bool *isfind)
void hlparsetext(Oid cfgId, HeadlineParsedText *prs, TSQuery query, char *buf, int32 buflen)
text * generateHeadline(HeadlineParsedText *prs)
bool tsquery_requires_match(QueryItem *curitem)
QueryItem * clean_NOT(QueryItem *ptr, int32 *len)
TSVector make_tsvector(ParsedText *prs)
bool QTNEq(QTNode *a, QTNode *b)
TSTernaryValue TS_execute_ternary(QueryItem *curitem, void *arg, uint32 flags, TSExecuteCallback chkcond)
struct TSQueryParserStateData * TSQueryParserState
void pushStop(TSQueryParserState state)
TSQuery QTN2QT(QTNode *in)
TSVectorParseState init_tsvector_parser(char *input, int flags)
TSTernaryValue(* TSExecuteCallback)(void *arg, QueryOperand *val, ExecPhraseData *data)
void QTNBinary(QTNode *in)
void(* PushFunction)(Datum opaque, TSQueryParserState state, char *token, int tokenlen, int16 tokenweights, bool prefix)
TSQuery parse_tsquery(char *buf, PushFunction pushval, Datum opaque, int flags)