Browse Source

Added search cache and track query features.

@-Added search cache and track query features.
# For example please refer at ext/mnogosearch/test.php
PHP-4.0.5
Sergey Kartashoff 26 years ago
parent
commit
7413c65e31
  1. 3
      ext/mnogosearch/README
  2. 2
      ext/mnogosearch/config.m4
  3. 70
      ext/mnogosearch/php_mnogo.c
  4. 6
      ext/mnogosearch/php_mnogo.h
  5. 17
      ext/mnogosearch/test.php

3
ext/mnogosearch/README

@ -1,3 +1,6 @@
$Source$
$Id$
mnoGoSearch extension module version 0.3 for PHP4.
Basic mnoGoSearch function implementation.

2
ext/mnogosearch/config.m4

@ -1,6 +1,6 @@
dnl $Source$
dnl $Id$
PHP_ARG_WITH(mnogosearch,for mnoGoSearch support,
[ --with-mnogosearch[=DIR] Include mnoGoSearch support. DIR is the mnoGoSearch base
install directory, defaults to /usr/local/udmsearch.])

70
ext/mnogosearch/php_mnogo.c

@ -1,3 +1,6 @@
/* $Source$ */
/* $Id$ */
/*
+----------------------------------------------------------------------+
| PHP version 4.0 |
@ -18,8 +21,6 @@
| Further development by Sergey Kartashoff <gluke@biosys.net> |
+----------------------------------------------------------------------+
*/
/* $Id: php_mnogo.c,v 0.3 2001/01/27 15:30:00 */
#include "php.h"
#include "php_mnogo.h"
@ -40,12 +41,19 @@
#define UDM_FIELD_SCORE 256
#define UDM_FIELD_MODIFIED 512
/* udm_set_agent_param constants */
#define UDM_PARAM_PAGE_SIZE 1
#define UDM_PARAM_PAGE_NUM 2
#define UDM_PARAM_SEARCH_MODE 4
#define UDM_PARAM_CHARSET 8
#define UDM_PARAM_NUM_ROWS 16
#define UDM_PARAM_FOUND 32
#define UDM_PARAM_SEARCH_MODE 3
#define UDM_PARAM_CACHE_MODE 4
#define UDM_PARAM_TRACK_MODE 5
#define UDM_TRACK_ENABLED 1
#define UDM_TRACK_DISABLED 0
/* udm_get_res_param constants */
#define UDM_PARAM_NUM_ROWS 256
#define UDM_PARAM_FOUND 257
/* True globals, no need for thread safety */
static int le_link,le_res;
@ -112,18 +120,30 @@ DLEXPORT PHP_MINIT_FUNCTION(mnogosearch)
REGISTER_LONG_CONSTANT("UDM_FIELD_SCORE", UDM_FIELD_SCORE,CONST_CS | CONST_PERSISTENT);
REGISTER_LONG_CONSTANT("UDM_FIELD_MODIFIED",UDM_FIELD_MODIFIED,CONST_CS | CONST_PERSISTENT);
/* udm_set_agent_param constants */
REGISTER_LONG_CONSTANT("UDM_PARAM_PAGE_SIZE",UDM_PARAM_PAGE_SIZE,CONST_CS | CONST_PERSISTENT);
REGISTER_LONG_CONSTANT("UDM_PARAM_PAGE_NUM",UDM_PARAM_PAGE_NUM,CONST_CS | CONST_PERSISTENT);
REGISTER_LONG_CONSTANT("UDM_PARAM_SEARCH_MODE",UDM_PARAM_SEARCH_MODE,CONST_CS | CONST_PERSISTENT);
REGISTER_LONG_CONSTANT("UDM_PARAM_CHARSET",UDM_PARAM_CHARSET,CONST_CS | CONST_PERSISTENT);
REGISTER_LONG_CONSTANT("UDM_PARAM_SEARCH_MODE",UDM_PARAM_SEARCH_MODE,CONST_CS | CONST_PERSISTENT);
REGISTER_LONG_CONSTANT("UDM_PARAM_CACHE_MODE",UDM_PARAM_CACHE_MODE,CONST_CS | CONST_PERSISTENT);
REGISTER_LONG_CONSTANT("UDM_PARAM_TRACK_MODE",UDM_PARAM_TRACK_MODE,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);
/* search modes */
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);
/* search cache params */
REGISTER_LONG_CONSTANT("UDM_CACHE_ENABLED",UDM_CACHE_ENABLED,CONST_CS | CONST_PERSISTENT);
REGISTER_LONG_CONSTANT("UDM_CACHE_DISABLED",UDM_CACHE_DISABLED,CONST_CS | CONST_PERSISTENT);
/* track mode params */
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);
return SUCCESS;
}
@ -246,8 +266,8 @@ DLEXPORT PHP_FUNCTION(udm_set_agent_param)
if(Agent->page_number<0)Agent->page_number=0;
}
break;
case UDM_PARAM_SEARCH_MODE: {
switch (atoi(val)){
case UDM_PARAM_SEARCH_MODE:
switch (atoi(val)){
case UDM_MODE_ALL:
Agent->search_mode=UDM_MODE_ALL;
break;
@ -260,7 +280,33 @@ DLEXPORT PHP_FUNCTION(udm_set_agent_param)
default:
RETURN_STRING("<Udm_Set_Agent_Param: Unknown search mode>",1);
break;
}
}
break;
case UDM_PARAM_CACHE_MODE:
switch (atoi(val)){
case UDM_CACHE_ENABLED:
Agent->cache_mode=UDM_CACHE_ENABLED;
break;
case UDM_CACHE_DISABLED:
Agent->cache_mode=UDM_CACHE_DISABLED;
break;
default:
Agent->cache_mode=UDM_CACHE_DISABLED;
RETURN_STRING("<Udm_Set_Agent_Param: Unknown cache mode>",1);
break;
}
break;
case UDM_PARAM_TRACK_MODE:
switch (atoi(val)){
case UDM_TRACK_ENABLED:
Agent->track_mode|=UDM_TRACK_QUERIES;
break;
case UDM_TRACK_DISABLED:
Agent->track_mode &= ~(UDM_TRACK_QUERIES);
break;
default:
RETURN_STRING("<Udm_Set_Agent_Param: Unknown track_mode>",1);
break;
}
break;
default:

6
ext/mnogosearch/php_mnogo.h

@ -1,3 +1,6 @@
/* $Source$ */
/* $Id$ */
/*
+----------------------------------------------------------------------+
| PHP HTML Embedded Scripting Language Version 3.0 |
@ -30,9 +33,6 @@
+----------------------------------------------------------------------+
*/
/* $Id: php_mnogo.h,v 0.3 2001/01/27 15:30:00 */
#ifndef _PHP_MNOGO_H
#define _PHP_MNOGO_H

17
ext/mnogosearch/test.php

@ -1,3 +1,8 @@
<!--
$Source$
$Id$
-->
<html>
<body>
@ -23,14 +28,13 @@
$page_size=10;
$page_number=0;
$search_mode=UDM_MODE_BOOL;
$first=$page_size*$page_number+1;
Udm_Set_Agent_Param($udm,UDM_PARAM_PAGE_SIZE,$page_size);
Udm_Set_Agent_Param($udm,UDM_PARAM_PAGE_NUM,$page_number);
Udm_Set_Agent_Param($udm,UDM_PARAM_SEARCH_MODE,$search_mode);
Udm_Set_Agent_Param($udm,UDM_PARAM_SEARCH_MODE,UDM_MODE_BOOL);
Udm_Set_Agent_Param($udm,UDM_PARAM_CACHE_MODE,UDM_PARAM_CACHE_DISABLED);
Udm_Set_Agent_Param($udm,UDM_PARAM_TRACK_MODE,UDM_TRACK_DISABLED);
// Stage 3: perform search
$res=Udm_Find($udm,$q);
@ -42,7 +46,8 @@
// Display error message
printf("Error #%d: '%s'\n",$errno,Udm_Error($udm));
}else{
$first=$page_size*$page_number+1;
// Get result parameters
$total=Udm_Get_Res_Param($res,UDM_PARAM_FOUND);
$rows=Udm_Get_Res_Param($res,UDM_PARAM_NUM_ROWS);

Loading…
Cancel
Save