📄 php_mnogo.c
字号:
/* $Source: /repository/php-src/ext/mnogosearch/Attic/php_mnogo.c,v $ *//* $Id: php_mnogo.c,v 1.66.2.14.2.3 2007/01/01 09:46:44 sebastian Exp $ *//* +----------------------------------------------------------------------+ | PHP Version 4 | +----------------------------------------------------------------------+ | Copyright (c) 1997-2007 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | | available through the world-wide-web at the following url: | | http://www.php.net/license/3_0.txt. | | If you did not receive a copy of the PHP license and are unable to | | obtain it through the world-wide-web, please send a note to | | license@php.net so we can mail you a copy immediately. | +----------------------------------------------------------------------+ | Authors: | | Initial version by Alex Barkov <bar@izhcom.ru> | | and Ramil Kalimullin <ram@izhcom.ru> | | Further development by Sergey Kartashoff <gluke@mail.ru> | +----------------------------------------------------------------------+ */#ifdef HAVE_CONFIG_H#include "config.h"#endif#include "php.h"#include "php_mnogo.h"#include "ext/standard/php_standard.h"#include "ext/standard/info.h"#include "php_globals.h"#ifdef HAVE_MNOGOSEARCH#define UDMSTRSIZ 1024*5#define UDM_FIELD_URLID 1#define UDM_FIELD_URL 2#define UDM_FIELD_CONTENT 3 #define UDM_FIELD_TITLE 4#define UDM_FIELD_KEYWORDS 5#define UDM_FIELD_DESC 6#define UDM_FIELD_TEXT 7#define UDM_FIELD_SIZE 8#define UDM_FIELD_RATING 9#define UDM_FIELD_MODIFIED 10#define UDM_FIELD_ORDER 11#define UDM_FIELD_CRC 12#define UDM_FIELD_CATEGORY 13#define UDM_FIELD_LANG 14#define UDM_FIELD_CHARSET 15#define UDM_FIELD_SITEID 16#define UDM_FIELD_POP_RANK 17#define UDM_FIELD_ORIGINID 18/* udm_set_agent_param constants */#define UDM_PARAM_PAGE_SIZE 1#define UDM_PARAM_PAGE_NUM 2#define UDM_PARAM_SEARCH_MODE 3#define UDM_PARAM_CACHE_MODE 4#define UDM_PARAM_TRACK_MODE 5#define UDM_PARAM_CHARSET 6#define UDM_PARAM_STOPTABLE 7#define UDM_PARAM_STOPFILE 8#define UDM_PARAM_WEIGHT_FACTOR 9#define UDM_PARAM_WORD_MATCH 10#define UDM_PARAM_PHRASE_MODE 11#define UDM_PARAM_MIN_WORD_LEN 12#define UDM_PARAM_MAX_WORD_LEN 13#define UDM_PARAM_ISPELL_PREFIXES 14#define UDM_PARAM_CROSS_WORDS 15#define UDM_PARAM_VARDIR 16#define UDM_PARAM_LOCAL_CHARSET 17#define UDM_PARAM_BROWSER_CHARSET 18#define UDM_PARAM_HLBEG 19#define UDM_PARAM_HLEND 20#define UDM_PARAM_SYNONYM 21#define UDM_PARAM_SEARCHD 22#define UDM_PARAM_QSTRING 23#define UDM_PARAM_REMOTE_ADDR 24#define UDM_PARAM_QUERY 25#define UDM_PARAM_STORED 26#define UDM_PARAM_GROUPBYSITE 27#define UDM_PARAM_SITEID 28#define UDM_PARAM_DETECT_CLONES 29#define UDM_PARAM_SORT_ORDER 30#define UDM_PARAM_RESULTS_LIMIT 31#define UDM_PARAM_EXCERPT_SIZE 32#define UDM_PARAM_EXCERPT_PADDING 33/* udm_add_search_limit constants */#define UDM_LIMIT_URL 1#define UDM_LIMIT_TAG 2#define UDM_LIMIT_LANG 3#define UDM_LIMIT_CAT 4#define UDM_LIMIT_DATE 5#define UDM_LIMIT_TYPE 6/* word match type */#define UDM_MATCH_WORD 0#define UDM_MATCH_BEGIN 1#define UDM_MATCH_SUBSTR 2#define UDM_MATCH_END 3/* track modes */#define UDM_TRACK_ENABLED 1#define UDM_TRACK_DISABLED 0/* cache modes */#define UDM_CACHE_ENABLED 1#define UDM_CACHE_DISABLED 0/* phrase modes */#define UDM_PHRASE_ENABLED 1#define UDM_PHRASE_DISABLED 0/* prefix modes */#define UDM_PREFIXES_ENABLED 1#define UDM_PREFIXES_DISABLED 0/* crosswords modes */#define UDM_CROSS_WORDS_ENABLED 1#define UDM_CROSS_WORDS_DISABLED 0/* General modes */#define UDM_ENABLED 1#define UDM_DISABLED 0/* udm_get_res_param constants */#define UDM_PARAM_NUM_ROWS 256#define UDM_PARAM_FOUND 257#define UDM_PARAM_WORDINFO 258#define UDM_PARAM_SEARCHTIME 259#define UDM_PARAM_FIRST_DOC 260#define UDM_PARAM_LAST_DOC 261#define UDM_PARAM_WORDINFO_ALL 262/* udm_load_ispell_data constants */#define UDM_ISPELL_TYPE_AFFIX 1#define UDM_ISPELL_TYPE_SPELL 2#define UDM_ISPELL_TYPE_DB 3#define UDM_ISPELL_TYPE_SERVER 4/* True globals, no need for thread safety */static int le_link,le_res;#include <udm_config.h>#include <udmsearch.h>/* {{{ mnogosearch_functions[] */function_entry mnogosearch_functions[] = { PHP_FE(udm_api_version, NULL)#if UDM_VERSION_ID >= 30200 PHP_FE(udm_check_charset, NULL)#if UDM_VERSION_ID == 30203 PHP_FE(udm_open_stored, NULL) PHP_FE(udm_check_stored,NULL) PHP_FE(udm_close_stored,NULL)#endif#if UDM_VERSION_ID >= 30203 PHP_FE(udm_crc32, NULL)#endif#if UDM_VERSION_ID >= 30204 PHP_FE(udm_parse_query_string, NULL) PHP_FE(udm_make_excerpt, NULL) PHP_FE(udm_set_agent_param_ex, NULL) PHP_FE(udm_get_res_field_ex, NULL)#endif#if UDM_VERSION_ID >= 30211 PHP_FE(udm_hash32, NULL) PHP_FE(udm_alloc_agent_array, NULL)#endif#endif PHP_FE(udm_alloc_agent, NULL) PHP_FE(udm_set_agent_param, NULL) PHP_FE(udm_load_ispell_data, NULL) PHP_FE(udm_free_ispell_data, NULL) PHP_FE(udm_add_search_limit, NULL) PHP_FE(udm_clear_search_limits, NULL) PHP_FE(udm_errno, NULL) PHP_FE(udm_error, NULL) PHP_FE(udm_find, NULL) PHP_FE(udm_get_res_param, NULL) PHP_FE(udm_get_res_field, NULL) PHP_FE(udm_cat_list, NULL) PHP_FE(udm_cat_path, NULL) PHP_FE(udm_free_res, NULL) PHP_FE(udm_free_agent, NULL)#if UDM_VERSION_ID > 30110 PHP_FE(udm_get_doc_count, NULL)#endif {NULL, NULL, NULL}};/* }}} */zend_module_entry mnogosearch_module_entry = { STANDARD_MODULE_HEADER, "mnogosearch", mnogosearch_functions, PHP_MINIT(mnogosearch), PHP_MSHUTDOWN(mnogosearch), PHP_RINIT(mnogosearch), NULL, PHP_MINFO(mnogosearch), NO_VERSION_YET, STANDARD_MODULE_PROPERTIES};#ifdef COMPILE_DL_MNOGOSEARCHZEND_GET_MODULE(mnogosearch)#endifstatic void _free_udm_agent(zend_rsrc_list_entry *rsrc TSRMLS_DC){ UDM_AGENT * Agent = (UDM_AGENT *)rsrc->ptr;#if UDM_VERSION_ID >= 30204 UdmEnvFree(Agent->Conf); UdmAgentFree(Agent);#else UdmFreeEnv(Agent->Conf); UdmFreeAgent(Agent);#endif}static void _free_udm_res(zend_rsrc_list_entry *rsrc TSRMLS_DC){ UDM_RESULT * Res = (UDM_RESULT *)rsrc->ptr;#if UDM_VERSION_ID >= 30204 UdmResultFree(Res);#else UdmFreeResult(Res);#endif}/* {{{ PHP_MINIT_FUNCTION */DLEXPORT PHP_MINIT_FUNCTION(mnogosearch){ UdmInit(); le_link = zend_register_list_destructors_ex(_free_udm_agent,NULL,"mnogosearch agent",module_number); le_res = zend_register_list_destructors_ex(_free_udm_res,NULL,"mnogosearch result",module_number); REGISTER_LONG_CONSTANT("UDM_FIELD_URLID", UDM_FIELD_URLID,CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("UDM_FIELD_URL", UDM_FIELD_URL,CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("UDM_FIELD_CONTENT", UDM_FIELD_CONTENT,CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("UDM_FIELD_TITLE", UDM_FIELD_TITLE,CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("UDM_FIELD_KEYWORDS", UDM_FIELD_KEYWORDS,CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("UDM_FIELD_DESC", UDM_FIELD_DESC,CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("UDM_FIELD_DESCRIPTION", UDM_FIELD_DESC,CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("UDM_FIELD_TEXT", UDM_FIELD_TEXT,CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("UDM_FIELD_SIZE", UDM_FIELD_SIZE,CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("UDM_FIELD_RATING", UDM_FIELD_RATING,CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("UDM_FIELD_SCORE", UDM_FIELD_RATING,CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("UDM_FIELD_MODIFIED", UDM_FIELD_MODIFIED,CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("UDM_FIELD_ORDER", UDM_FIELD_ORDER,CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("UDM_FIELD_CRC", UDM_FIELD_CRC,CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("UDM_FIELD_CATEGORY", UDM_FIELD_CATEGORY,CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("UDM_FIELD_LANG", UDM_FIELD_LANG,CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("UDM_FIELD_CHARSET", UDM_FIELD_CHARSET,CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("UDM_FIELD_SITEID", UDM_FIELD_SITEID,CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("UDM_FIELD_POP_RANK", UDM_FIELD_POP_RANK,CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("UDM_FIELD_ORIGINID", UDM_FIELD_ORIGINID,CONST_CS | CONST_PERSISTENT); /* udm_set_agent_param constants */ REGISTER_LONG_CONSTANT("UDM_PARAM_PAGE_SIZE", UDM_PARAM_PAGE_SIZE,CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("UDM_PARAM_PAGE_NUM", UDM_PARAM_PAGE_NUM,CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("UDM_PARAM_SEARCH_MODE", UDM_PARAM_SEARCH_MODE,CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("UDM_PARAM_CACHE_MODE", UDM_PARAM_CACHE_MODE,CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("UDM_PARAM_TRACK_MODE", UDM_PARAM_TRACK_MODE,CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("UDM_PARAM_PHRASE_MODE", UDM_PARAM_PHRASE_MODE,CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("UDM_PARAM_CHARSET", UDM_PARAM_CHARSET,CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("UDM_PARAM_LOCAL_CHARSET",UDM_PARAM_LOCAL_CHARSET,CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("UDM_PARAM_BROWSER_CHARSET",UDM_PARAM_BROWSER_CHARSET,CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("UDM_PARAM_STOPTABLE", UDM_PARAM_STOPTABLE,CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("UDM_PARAM_STOP_TABLE", UDM_PARAM_STOPTABLE,CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("UDM_PARAM_STOPFILE", UDM_PARAM_STOPFILE,CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("UDM_PARAM_STOP_FILE", UDM_PARAM_STOPFILE,CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("UDM_PARAM_WEIGHT_FACTOR",UDM_PARAM_WEIGHT_FACTOR,CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("UDM_PARAM_WORD_MATCH", UDM_PARAM_WORD_MATCH,CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("UDM_PARAM_MAX_WORD_LEN",UDM_PARAM_MAX_WORD_LEN,CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("UDM_PARAM_MAX_WORDLEN", UDM_PARAM_MAX_WORD_LEN,CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("UDM_PARAM_MIN_WORD_LEN",UDM_PARAM_MIN_WORD_LEN,CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("UDM_PARAM_MIN_WORDLEN", UDM_PARAM_MIN_WORD_LEN,CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("UDM_PARAM_ISPELL_PREFIXES",UDM_PARAM_ISPELL_PREFIXES,CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("UDM_PARAM_ISPELL_PREFIX",UDM_PARAM_ISPELL_PREFIXES,CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("UDM_PARAM_PREFIXES", UDM_PARAM_ISPELL_PREFIXES,CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("UDM_PARAM_PREFIX", UDM_PARAM_ISPELL_PREFIXES,CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("UDM_PARAM_CROSS_WORDS", UDM_PARAM_CROSS_WORDS,CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("UDM_PARAM_CROSSWORDS", UDM_PARAM_CROSS_WORDS,CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("UDM_PARAM_VARDIR", UDM_PARAM_VARDIR,CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("UDM_PARAM_DATADIR", UDM_PARAM_VARDIR,CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("UDM_PARAM_HLBEG", UDM_PARAM_HLBEG,CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("UDM_PARAM_HLEND", UDM_PARAM_HLEND,CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("UDM_PARAM_SYNONYM", UDM_PARAM_SYNONYM,CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("UDM_PARAM_SEARCHD", UDM_PARAM_SEARCHD,CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("UDM_PARAM_STORED", UDM_PARAM_STORED,CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("UDM_PARAM_GROUPBYSITE", UDM_PARAM_GROUPBYSITE,CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("UDM_PARAM_QSTRING", UDM_PARAM_QSTRING,CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("UDM_PARAM_REMOTE_ADDR", UDM_PARAM_REMOTE_ADDR,CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("UDM_PARAM_QUERY", UDM_PARAM_QUERY,CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("UDM_PARAM_SITEID", UDM_PARAM_SITEID,CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("UDM_PARAM_DETECT_CLONES",UDM_PARAM_DETECT_CLONES,CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("UDM_PARAM_SORT_ORDER",UDM_PARAM_SORT_ORDER,CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("UDM_PARAM_RESULTS_LIMIT",UDM_PARAM_RESULTS_LIMIT,CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("UDM_PARAM_EXCERPT_SIZE",UDM_PARAM_EXCERPT_SIZE,CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("UDM_PARAM_EXCERPT_PADDING",UDM_PARAM_EXCERPT_PADDING,CONST_CS | CONST_PERSISTENT); /* udm_add_search_limit constants */ REGISTER_LONG_CONSTANT("UDM_LIMIT_CAT", UDM_LIMIT_CAT,CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("UDM_LIMIT_URL", UDM_LIMIT_URL,CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("UDM_LIMIT_TAG", UDM_LIMIT_TAG,CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("UDM_LIMIT_LANG", UDM_LIMIT_LANG,CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("UDM_LIMIT_DATE", UDM_LIMIT_DATE,CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("UDM_LIMIT_TYPE", UDM_LIMIT_TYPE,CONST_CS | CONST_PERSISTENT); /* udm_get_res_param constants */ REGISTER_LONG_CONSTANT("UDM_PARAM_FOUND", UDM_PARAM_FOUND,CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("UDM_PARAM_NUM_ROWS", UDM_PARAM_NUM_ROWS,CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("UDM_PARAM_WORDINFO", UDM_PARAM_WORDINFO,CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("UDM_PARAM_WORDINFO_ALL",UDM_PARAM_WORDINFO_ALL,CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("UDM_PARAM_WORD_INFO", UDM_PARAM_WORDINFO,CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("UDM_PARAM_SEARCHTIME", UDM_PARAM_SEARCHTIME,CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("UDM_PARAM_SEARCH_TIME", UDM_PARAM_SEARCHTIME,CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("UDM_PARAM_FIRST_DOC", UDM_PARAM_FIRST_DOC,CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("UDM_PARAM_LAST_DOC", UDM_PARAM_LAST_DOC,CONST_CS | CONST_PERSISTENT); /* search modes */ REGISTER_LONG_CONSTANT("UDM_MODE_ALL", UDM_MODE_ALL,CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("UDM_MODE_ANY", UDM_MODE_ANY,CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("UDM_MODE_BOOL", UDM_MODE_BOOL,CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("UDM_MODE_PHRASE", UDM_MODE_PHRASE,CONST_CS | CONST_PERSISTENT); /* search cache params */ REGISTER_LONG_CONSTANT("UDM_CACHE_ENABLED", UDM_ENABLED,CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("UDM_CACHE_DISABLED", UDM_DISABLED,CONST_CS | CONST_PERSISTENT); /* track mode params */ REGISTER_LONG_CONSTANT("UDM_TRACK_ENABLED", UDM_ENABLED,CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("UDM_TRACK_DISABLED", UDM_DISABLED,CONST_CS | CONST_PERSISTENT); /* phrase mode params */ REGISTER_LONG_CONSTANT("UDM_PHRASE_ENABLED", UDM_ENABLED,CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("UDM_PHRASE_DISABLED", UDM_DISABLED,CONST_CS | CONST_PERSISTENT); /* general params */ REGISTER_LONG_CONSTANT("UDM_ENABLED", UDM_ENABLED,CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("UDM_DISABLED", UDM_DISABLED,CONST_CS | CONST_PERSISTENT); /* crosswords mode params */ REGISTER_LONG_CONSTANT("UDM_CROSS_WORDS_ENABLED",UDM_ENABLED,CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("UDM_CROSSWORDS_ENABLED",UDM_ENABLED,CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("UDM_CROSS_WORDS_DISABLED",UDM_DISABLED,CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("UDM_CROSSWORDS_DISABLED",UDM_DISABLED,CONST_CS | CONST_PERSISTENT); /* prefixes mode params */ REGISTER_LONG_CONSTANT("UDM_PREFIXES_ENABLED", UDM_ENABLED,CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("UDM_PREFIX_ENABLED", UDM_ENABLED,CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("UDM_ISPELL_PREFIXES_ENABLED",UDM_ENABLED,CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("UDM_ISPELL_PREFIX_ENABLED",UDM_ENABLED,CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("UDM_PREFIXES_DISABLED", UDM_DISABLED,CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("UDM_PREFIX_DISABLED", UDM_DISABLED,CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("UDM_ISPELL_PREFIXES_DISABLED",UDM_DISABLED,CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("UDM_ISPELL_PREFIX_DISABLED",UDM_DISABLED,CONST_CS | CONST_PERSISTENT); /* ispell type params */ REGISTER_LONG_CONSTANT("UDM_ISPELL_TYPE_AFFIX", UDM_ISPELL_TYPE_AFFIX,CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("UDM_ISPELL_TYPE_SPELL", UDM_ISPELL_TYPE_SPELL,CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("UDM_ISPELL_TYPE_DB", UDM_ISPELL_TYPE_DB,CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("UDM_ISPELL_TYPE_SERVER",UDM_ISPELL_TYPE_SERVER,CONST_CS | CONST_PERSISTENT); /* word match mode params */ REGISTER_LONG_CONSTANT("UDM_MATCH_WORD", UDM_MATCH_WORD,CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("UDM_MATCH_BEGIN", UDM_MATCH_BEGIN,CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("UDM_MATCH_SUBSTR", UDM_MATCH_SUBSTR,CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("UDM_MATCH_END", UDM_MATCH_END,CONST_CS | CONST_PERSISTENT); return SUCCESS;}/* }}} */DLEXPORT PHP_MSHUTDOWN_FUNCTION(mnogosearch){ return SUCCESS;}DLEXPORT PHP_RINIT_FUNCTION(mnogosearch){ return SUCCESS;}DLEXPORT PHP_MINFO_FUNCTION(mnogosearch){ char buf[32]; php_info_print_table_start(); php_info_print_table_row(2, "mnoGoSearch Support", "enabled" ); sprintf(buf,"%d", UDM_VERSION_ID); php_info_print_table_row(2, "mnoGoSearch library version", buf ); php_info_print_table_end();}static char* MyRemoveHiLightDup(const char *s){ size_t len=strlen(s)+1; char *res=malloc(len); char *d; for(d=res;s[0];s++){ switch(s[0]){ case '\2': case '\3': break; default: *d++=*s; } } *d='\0'; return res;}/* {{{ proto int udm_alloc_agent(string dbaddr [, string dbmode]) Allocate mnoGoSearch session */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -