]> granicus.if.org Git - php/commitdiff
Phrase search support has been added to mnogosearch extenstion.
authorSergey Kartashoff <gluke@php.net>
Tue, 20 Feb 2001 11:29:16 +0000 (11:29 +0000)
committerSergey Kartashoff <gluke@php.net>
Tue, 20 Feb 2001 11:29:16 +0000 (11:29 +0000)
Min_word_len and Max_word_len support has been added to mnogosearch
extension. Example updated.

ext/mnogosearch/php_mnogo.c
ext/mnogosearch/test.php

index 819d623c84593d317964e11061555f660c97f786..10c35dd7198c5d521cd230949f580ab5fbcd7e1c 100644 (file)
@@ -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
 #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;
index 9f42cb7b1d24f9140e1dcf7c87707e1104a86716..da99a164c4d8ccdcb4665bbffda14f21c05df795 100644 (file)
@@ -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/%");