mirror of
https://github.com/php/php-src.git
synced 2024-11-25 10:54:15 +08:00
Added new Udm_Add_Search_Limit mnoGoSearch extension function.
Some bugfixes and example update. @- Added new Udm_Add_Search_Limit mnoGoSearch extension function. @ Some bugfixes and example update. (gluke)
This commit is contained in:
parent
efa9319c64
commit
83265243d3
@ -2,7 +2,7 @@ $Source$
|
||||
$Id$
|
||||
|
||||
mnoGoSearch extension module for PHP4.
|
||||
Basic mnoGoSearch function implementation.
|
||||
mnoGoSearch function implementation.
|
||||
|
||||
If used with mysql you should not use bundled mysql library
|
||||
in the php distribution. You should use native mysql
|
||||
@ -12,7 +12,7 @@ library. To do this you should compile php with specefying mysql-dir
|
||||
TODO
|
||||
----
|
||||
|
||||
1. Implement more mnoGoSearch functions.
|
||||
1. Implement all mnoGoSearch functions.
|
||||
|
||||
2. Fix config.m4 to detect whether mnoGoSearch is actually installed.
|
||||
Currently there is no any checking. ./configure just trust that mnoGoSearch
|
||||
|
@ -51,6 +51,12 @@
|
||||
#define UDM_PARAM_STOPTABLE 7
|
||||
#define UDM_PARAM_STOPFILE 8
|
||||
|
||||
/* 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_TRACK_ENABLED 1
|
||||
#define UDM_TRACK_DISABLED 0
|
||||
|
||||
@ -66,6 +72,7 @@ static int le_link,le_res;
|
||||
function_entry mnogosearch_functions[] = {
|
||||
PHP_FE(udm_alloc_agent, NULL)
|
||||
PHP_FE(udm_set_agent_param, NULL)
|
||||
PHP_FE(udm_add_search_limit, NULL)
|
||||
PHP_FE(udm_free_agent, NULL)
|
||||
|
||||
PHP_FE(udm_errno, NULL)
|
||||
@ -133,6 +140,12 @@ DLEXPORT PHP_MINIT_FUNCTION(mnogosearch)
|
||||
REGISTER_LONG_CONSTANT("UDM_PARAM_STOPTABLE",UDM_PARAM_STOPTABLE,CONST_CS | CONST_PERSISTENT);
|
||||
REGISTER_LONG_CONSTANT("UDM_PARAM_STOPFILE",UDM_PARAM_STOPFILE,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);
|
||||
|
||||
/* 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);
|
||||
@ -354,7 +367,66 @@ DLEXPORT PHP_FUNCTION(udm_set_agent_param)
|
||||
break;
|
||||
|
||||
default:
|
||||
php_error(E_WARNING,"Udm_Set_Agent_Param: Unknown agent parameter");
|
||||
php_error(E_WARNING,"Udm_Set_Agent_Param: Unknown agent session parameter");
|
||||
RETURN_FALSE;
|
||||
break;
|
||||
}
|
||||
RETURN_TRUE;
|
||||
}
|
||||
/* }}} */
|
||||
|
||||
|
||||
/* {{{ proto int udm_add_search_limit(int agent, int var, string val)
|
||||
Add mnoGoSearch search restrictions */
|
||||
DLEXPORT PHP_FUNCTION(udm_add_search_limit)
|
||||
{
|
||||
pval **yyagent, **yyvar, **yyval;
|
||||
char *val;
|
||||
int var;
|
||||
UDM_AGENT * Agent;
|
||||
|
||||
switch(ZEND_NUM_ARGS()){
|
||||
|
||||
case 3:
|
||||
if(zend_get_parameters_ex(3,&yyagent,&yyvar,&yyval)==FAILURE){
|
||||
RETURN_FALSE;
|
||||
}
|
||||
convert_to_long_ex(yyvar);
|
||||
convert_to_string_ex(yyval);
|
||||
ZEND_FETCH_RESOURCE(Agent, UDM_AGENT *, yyagent, -1, "mnoGoSearch-agent", le_link);
|
||||
var = (*yyvar)->value.lval;
|
||||
val = (*yyval)->value.str.val;
|
||||
|
||||
break;
|
||||
|
||||
default:
|
||||
WRONG_PARAM_COUNT;
|
||||
break;
|
||||
}
|
||||
|
||||
switch(var){
|
||||
case UDM_LIMIT_URL:
|
||||
UdmAddURLLimit(Agent->Conf,val);
|
||||
|
||||
break;
|
||||
|
||||
case UDM_LIMIT_TAG:
|
||||
UdmAddTagLimit(Agent->Conf,val);
|
||||
|
||||
break;
|
||||
|
||||
case UDM_LIMIT_LANG:
|
||||
UdmAddLangLimit(Agent->Conf,val);
|
||||
|
||||
break;
|
||||
|
||||
case UDM_LIMIT_CAT:
|
||||
UdmAddCatLimit(Agent->Conf,val);
|
||||
|
||||
break;
|
||||
|
||||
default:
|
||||
php_error(E_WARNING,"Udm_Add_Search_Limit: Unknown search limit parameter");
|
||||
RETURN_FALSE;
|
||||
break;
|
||||
}
|
||||
|
@ -48,6 +48,7 @@ DLEXPORT PHP_MINFO_FUNCTION(mnogosearch);
|
||||
|
||||
DLEXPORT PHP_FUNCTION(udm_alloc_agent);
|
||||
DLEXPORT PHP_FUNCTION(udm_set_agent_param);
|
||||
DLEXPORT PHP_FUNCTION(udm_add_search_limit);
|
||||
DLEXPORT PHP_FUNCTION(udm_free_agent);
|
||||
|
||||
DLEXPORT PHP_FUNCTION(udm_error);
|
||||
|
@ -35,14 +35,20 @@
|
||||
Udm_Set_Agent_Param($udm,UDM_PARAM_CACHE_MODE,UDM_CACHE_DISABLED);
|
||||
Udm_Set_Agent_Param($udm,UDM_PARAM_TRACK_MODE,UDM_TRACK_DISABLED);
|
||||
Udm_Set_Agent_Param($udm,UDM_PARAM_CHARSET,"koi8-r");
|
||||
Udm_Set_Agent_Param($udm,UDM_PARAM_STOPTABLE,"stopwords");
|
||||
// Udm_Set_Agent_Param($udm,UDM_PARAM_STOPTABLE,"stopword");
|
||||
// Udm_Set_Agent_Param($udm,UDM_PARAM_STOPFILE,"stop.txt");
|
||||
|
||||
// Stage 3: add search limits
|
||||
// Udm_Add_Search_Limit($udm,UDM_LIMIT_URL,"http://www.mydomain.com/%");
|
||||
// Udm_Add_Search_Limit($udm,UDM_LIMIT_TAG,"01");
|
||||
// Udm_Add_Search_Limit($udm,UDM_LIMIT_CAT,"01");
|
||||
// Udm_Add_Search_Limit($udm,UDM_LIMIT_LANG,"en");
|
||||
|
||||
// Stage 3: perform search
|
||||
// Stage 4: perform search
|
||||
|
||||
$res=Udm_Find($udm,$q);
|
||||
|
||||
// Stage 4: display results
|
||||
// Stage 5: display results
|
||||
|
||||
// Check error code
|
||||
if(($errno=Udm_Errno($udm))>0){
|
||||
@ -77,7 +83,7 @@
|
||||
Udm_Free_Res($res);
|
||||
}
|
||||
|
||||
//Stage 5: free UdmSearch agent
|
||||
//Stage 6: free UdmSearch agent
|
||||
|
||||
Udm_Free_Agent($udm);
|
||||
?>
|
||||
|
Loading…
Reference in New Issue
Block a user