summaryrefslogtreecommitdiff
path: root/ext/mnogosearch
diff options
context:
space:
mode:
authorSergey Kartashoff <gluke@php.net>2001-02-20 11:29:16 +0000
committerSergey Kartashoff <gluke@php.net>2001-02-20 11:29:16 +0000
commit3bfea1e6275da6e79de786c3672793fc8f385a84 (patch)
treea43be99a8c12c09fd113b893bf2ee1694c0d12c0 /ext/mnogosearch
parent1888a98a4b57e327e822ab6610739383aa320fbb (diff)
downloadphp-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.c49
-rw-r--r--ext/mnogosearch/test.php5
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/%");