diff options
author | Sergey Kartashoff <gluke@php.net> | 2001-02-20 11:29:16 +0000 |
---|---|---|
committer | Sergey Kartashoff <gluke@php.net> | 2001-02-20 11:29:16 +0000 |
commit | 3bfea1e6275da6e79de786c3672793fc8f385a84 (patch) | |
tree | a43be99a8c12c09fd113b893bf2ee1694c0d12c0 /ext/mnogosearch | |
parent | 1888a98a4b57e327e822ab6610739383aa320fbb (diff) | |
download | php-git-3bfea1e6275da6e79de786c3672793fc8f385a84.tar.gz |
Phrase search support has been added to mnogosearch extenstion.
Min_word_len and Max_word_len support has been added to mnogosearch
extension. Example updated.
Diffstat (limited to 'ext/mnogosearch')
-rw-r--r-- | ext/mnogosearch/php_mnogo.c | 49 | ||||
-rw-r--r-- | ext/mnogosearch/test.php | 5 |
2 files changed, 53 insertions, 1 deletions
diff --git a/ext/mnogosearch/php_mnogo.c b/ext/mnogosearch/php_mnogo.c index 819d623c84..10c35dd719 100644 --- a/ext/mnogosearch/php_mnogo.c +++ b/ext/mnogosearch/php_mnogo.c @@ -54,6 +54,9 @@ #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 /* udm_add_search_limit constants */ #define UDM_LIMIT_URL 1 @@ -65,6 +68,10 @@ #define UDM_TRACK_ENABLED 1 #define UDM_TRACK_DISABLED 0 +/* phrase modes */ +#define UDM_PHRASE_ENABLED 1 +#define UDM_PHRASE_DISABLED 0 + /* udm_get_res_param constants */ #define UDM_PARAM_NUM_ROWS 256 #define UDM_PARAM_FOUND 257 @@ -160,6 +167,11 @@ DLEXPORT PHP_MINIT_FUNCTION(mnogosearch) 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_PHRASE_MODE", UDM_PARAM_PHRASE_MODE,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); /* udm_add_search_limit constants */ REGISTER_LONG_CONSTANT("UDM_LIMIT_CAT", UDM_LIMIT_CAT,CONST_CS | CONST_PERSISTENT); @@ -181,6 +193,7 @@ DLEXPORT PHP_MINIT_FUNCTION(mnogosearch) 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_CACHE_ENABLED,CONST_CS | CONST_PERSISTENT); @@ -190,6 +203,10 @@ DLEXPORT PHP_MINIT_FUNCTION(mnogosearch) REGISTER_LONG_CONSTANT("UDM_TRACK_ENABLED", UDM_TRACK_ENABLED,CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("UDM_TRACK_DISABLED", UDM_TRACK_DISABLED,CONST_CS | CONST_PERSISTENT); + /* phrase mode params */ + REGISTER_LONG_CONSTANT("UDM_PHRASE_ENABLED", UDM_PHRASE_ENABLED,CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("UDM_PHRASE_DISABLED", UDM_PHRASE_DISABLED,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); @@ -333,6 +350,10 @@ DLEXPORT PHP_FUNCTION(udm_set_agent_param) case UDM_MODE_BOOL: Agent->search_mode=UDM_MODE_BOOL; break; + + case UDM_MODE_PHRASE: + Agent->search_mode=UDM_MODE_PHRASE; + break; default: php_error(E_WARNING,"Udm_Set_Agent_Param: Unknown search mode"); @@ -404,7 +425,25 @@ DLEXPORT PHP_FUNCTION(udm_set_agent_param) } break; + + case UDM_PARAM_PHRASE_MODE: + switch (atoi(val)){ + case UDM_PHRASE_ENABLED: + Agent->Conf->use_phrases=UDM_PHRASE_ENABLED; + break; + + case UDM_PHRASE_DISABLED: + Agent->Conf->use_phrases=UDM_PHRASE_DISABLED; + break; + + default: + php_error(E_WARNING,"Udm_Set_Agent_Param: Unknown phrase mode"); + RETURN_FALSE; + break; + } + break; + case UDM_PARAM_CHARSET: Agent->Conf->local_charset=UdmGetCharset(val); Agent->charset=Agent->Conf->local_charset; @@ -430,6 +469,16 @@ DLEXPORT PHP_FUNCTION(udm_set_agent_param) break; + case UDM_PARAM_MIN_WORD_LEN: + Agent->Conf->min_word_len=atoi(val); + + break; + + case UDM_PARAM_MAX_WORD_LEN: + Agent->Conf->max_word_len=atoi(val); + + break; + default: php_error(E_WARNING,"Udm_Set_Agent_Param: Unknown agent session parameter"); RETURN_FALSE; diff --git a/ext/mnogosearch/test.php b/ext/mnogosearch/test.php index 9f42cb7b1d..da99a164c4 100644 --- a/ext/mnogosearch/test.php +++ b/ext/mnogosearch/test.php @@ -7,7 +7,7 @@ <body> <form method=post> -<input type=text size=30 name=q value="<? echo $q; ?>"> +<input type=text size=30 name=q value="<? echo htmlspecialchars(stripslashes($q)); ?>"> <input type=submit value=" Search ! "> </form> @@ -39,6 +39,9 @@ // Udm_Set_Agent_Param($udm,UDM_PARAM_STOPFILE,"stop.txt"); Udm_Set_Agent_Param($udm,UDM_PARAM_WEIGHT_FACTOR,"F9421"); Udm_Set_Agent_Param($udm,UDM_PARAM_WORD_MATCH,UDM_MATCH_SUBSTR); + Udm_Set_Agent_Param($udm,UDM_PARAM_PHRASE_MODE,UDM_PHRASE_DISABLED); + Udm_Set_Agent_Param($udm,UDM_PARAM_MIN_WORD_LEN,2); + Udm_Set_Agent_Param($udm,UDM_PARAM_MAX_WORD_LEN,5); // Stage 3: add search limits // Udm_Add_Search_Limit($udm,UDM_LIMIT_URL,"http://www.mydomain.com/%"); |