diff options
author | Sergey Kartashoff <gluke@php.net> | 2002-09-28 17:52:18 +0000 |
---|---|---|
committer | Sergey Kartashoff <gluke@php.net> | 2002-09-28 17:52:18 +0000 |
commit | 074d6c76077a09a4234c578afe73ab364b538e9c (patch) | |
tree | 1ea5d964a07f03de12c8562e8908b77fa87b1ea7 | |
parent | 0b5aae65f12b9e85f83bb065d088b02255e95eec (diff) | |
download | php-git-074d6c76077a09a4234c578afe73ab364b538e9c.tar.gz |
- Site mirror detection and popularity rank has been added to mnogosearch
extension
-rw-r--r-- | ext/mnogosearch/CREDITS | 2 | ||||
-rw-r--r-- | ext/mnogosearch/php_mnogo.c | 45 |
2 files changed, 43 insertions, 4 deletions
diff --git a/ext/mnogosearch/CREDITS b/ext/mnogosearch/CREDITS index 93dada0a4f..3ab998a1da 100644 --- a/ext/mnogosearch/CREDITS +++ b/ext/mnogosearch/CREDITS @@ -1,2 +1,2 @@ mnoGoSearch -Alex Barkov, Ramil Kalimullin, Sergey Kartashoff +Sergey Kartashoff, Alex Barkov, Ramil Kalimullin diff --git a/ext/mnogosearch/php_mnogo.c b/ext/mnogosearch/php_mnogo.c index b3160f6dfa..956e8cec4a 100644 --- a/ext/mnogosearch/php_mnogo.c +++ b/ext/mnogosearch/php_mnogo.c @@ -52,6 +52,8 @@ #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 @@ -82,6 +84,7 @@ #define UDM_PARAM_STORED 26 #define UDM_PARAM_GROUPBYSITE 27 #define UDM_PARAM_SITEID 28 +#define UDM_PARAM_DETECT_CLONES 29 /* udm_add_search_limit constants */ #define UDM_LIMIT_URL 1 @@ -260,6 +263,8 @@ DLEXPORT PHP_MINIT_FUNCTION(mnogosearch) 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); @@ -310,6 +315,7 @@ DLEXPORT PHP_MINIT_FUNCTION(mnogosearch) 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); /* udm_add_search_limit constants */ REGISTER_LONG_CONSTANT("UDM_LIMIT_CAT", UDM_LIMIT_CAT,CONST_CS | CONST_PERSISTENT); @@ -450,12 +456,13 @@ DLEXPORT PHP_FUNCTION(udm_alloc_agent) UdmVarListReplaceStr(&Env->Vars,"SyslogFacility","local7"); UdmSetLogLevel(Env,0); UdmOpenLog("mnoGoSearch-php",Env,0); - + if(!memcmp(dbaddr,"searchd:",8)){ UDM_URL Url; UdmURLParse(&Url,dbaddr); UdmDBListAdd(&Env->sdcl,Url.hostinfo); } + UdmVarListReplaceStr(&Env->Vars,"DBAddr",dbaddr); if(UDM_OK!=UdmDBSetAddr(Env->db,dbaddr,UDM_OPEN_MODE_READ)){ sprintf(Env->errstr,"Invalid DBAddr: '%s'",dbaddr); @@ -463,6 +470,7 @@ DLEXPORT PHP_FUNCTION(udm_alloc_agent) php_error(E_WARNING,"%s(): Invalid DBAddr", get_active_function_name(TSRMLS_C)); RETURN_FALSE; } + Agent=UdmAgentInit(NULL,Env,0); #elif UDM_VERSION_ID >= 30200 Env=UdmAllocEnv(); @@ -1024,7 +1032,7 @@ DLEXPORT PHP_FUNCTION(udm_set_agent_param) break; default: - php_error(E_WARNING,"%s(): Unknown crosswords mode", get_active_function_name(TSRMLS_C)); + php_error(E_WARNING,"%s(): Unknown groupbysite mode", get_active_function_name(TSRMLS_C)); RETURN_FALSE; break; } @@ -1036,6 +1044,25 @@ DLEXPORT PHP_FUNCTION(udm_set_agent_param) break; + case UDM_PARAM_DETECT_CLONES: + switch (atoi(val)){ + case UDM_ENABLED: + UdmVarListReplaceStr(&Agent->Conf->Vars,"DetectClones","yes"); + + break; + + case UDM_DISABLED: + UdmVarListReplaceStr(&Agent->Conf->Vars,"DetectClones","no"); + + break; + + default: + php_error(E_WARNING,"%s(): Unknown clones mode", get_active_function_name(TSRMLS_C)); + RETURN_FALSE; + break; + } + + break; #endif default: @@ -1291,11 +1318,15 @@ DLEXPORT PHP_FUNCTION(udm_add_search_limit) #if UDM_VERSION_ID < 30200 { struct udm_stl_info_t stl_info = { 0, 0, 0 }; + char *edate; if (val[0] == '>') { Z_TYPE(stl_info)=1; } else if (val[0] == '<') { Z_TYPE(stl_info)=-1; + } else if((val[0]=='#')&&(edate=strchr(val,','))){ + Z_TYPE(stl_info)=2; + stl_info.t2=(time_t)(atol(edate+1)); } else { php_error(E_WARNING,"%s(): Incorrect date limit format", get_active_function_name(TSRMLS_C)); RETURN_FALSE; @@ -1832,9 +1863,17 @@ DLEXPORT PHP_FUNCTION(udm_get_res_field) RETURN_LONG(UdmVarListFindInt(&(Res->Doc[row].Sections),"Site_id",0)); break; -#endif + case UDM_FIELD_POP_RANK: + RETURN_STRING((char *)UdmVarListFindStr(&(Res->Doc[row].Sections),"Pop_Rank",""),1); + + break; + + case UDM_FIELD_ORIGINID: + RETURN_LONG(UdmVarListFindInt(&(Res->Doc[row].Sections),"Origin-Id",0)); + break; +#endif default: php_error(E_WARNING,"%s(): Unknown mnoGoSearch field name", get_active_function_name(TSRMLS_C)); |