udm_find

(PHP 4 >= 4.0.5, PHP 5 < 5.1.0, PECL mnogosearch >= 1.0.0)

udm_findEffectue une recherche

Description

udm_find ( resource $agent , string $query ) : resource

Effectue une recherche.

La recherche en elle-même. Le premier argument agent est la session, le second est la requête (query). Pour rechercher, entrez les mots avec lesquels vous voulez faire une recherche, puis cliquez sur le bouton d'envoi. Par exemple, "mysql odbc". Vous ne devez pas utiliser de guillemets doubles ", car ils sont utilisés par mnoGoSearch pour séparer une requête en mots. Avec l'exemple ci-dessus, mnoGoSearch va rechercher les pages contenant "mysql" et/ou "odbc". Les meilleures réponses seront classées en premier, et affichées en tête de liste. Si vous sélectionnez le mode de recherche "tous" ("ALL"), la recherche va retourner les documents qui contiennent l'un ou l'autre des mots que vous avez entré. Dans le cas où vous utilisez le mode "ANY", la recherche retourne la liste des documents qui contiennent l'un ou l'autre des mots. Si vous voulez accéder aux fonctions avancées de recherche, vous pouvez utiliser le mode "BOOL", qui vous permet d'entrer directement des requêtes.

Liste de paramètres

agent

Un lien vers l'agent, reçu après un appel à la fonction udm_alloc_agent().

query

mnoGoSearch utilise les opérateurs booléens suivants :

& - AND, ET logique. Par exemple, "mysql & odbc". mnoGoSearch recherche toutes les URL qui contiennent à la fois les mots "mysql" et "odbc".

| - OR, OU logique. Par exemple, "mysql | odbc". mnoGoSearch recherche toutes les URL qui contiennent soit "mysql", soit "odbc".

~ - NOT, NON logique. Par exemple, "mysql & ~odbc". mnoGoSearch recherche toutes les URL qui contiennent le mot "mysql" mais ne contiennent pas le mot "odbc". Attention : la requête "~odbc" ne trouvera rien !

() - Groupement de commandes pour les requêtes complexes : par exemple, "(mysql | msql) & ~postgres". Le mode par requête est simple et puissant à la fois. Vous pouvez utiliser les commandes booléennes habituelles avec ce mode.

Valeurs de retour

Retourne un identifiant de résultat en cas de succès ou FALSE si une erreur survient.

add a note add a note

User Contributed Notes 2 notes

up
1
sm_dev_mnogo at u5 dot com
21 years ago
For me (PHP 4.3.3, Mnogo 3.2.15 on FreeBSD) Mnogo doesn't work as described - but very well if done as in the PHP-template distributed by MnogoSearch

I had huge problems getting Udm_Find(... to return anything at all.

All the other calls worked, like udm_get_doc_count(...  but _find seemed to insist on returning nothing, no matter what I tried.

However, I had actually a working installation of mnogo, using the PHP template, so it was just to find the difference in the, BTW impressive, work by Sergey 'gluke' Kartashoff.

The result was surprising, see below. The parameter UDM_PARAM_QUERY is not mentioned in the manual

<?php

  $q
="help";
 
// This is the real query. Note that Udm_find seems to
  // ignore it, despite the
  // description in the manual

 
$udm_agent
   
=Udm_Alloc_Agent('pgsql://me:secret@/mnogo_db/?dbmode=multi');
 
// This is actually also contrary to the manual, but it
  // works. Also in the PHP-template it said
/*
if (Udm_Api_Version() >= 30204) {
    $dbaddr='mysql://mnogo:mnogo@/mnogo/?dbmode=single';
} else {
    $dbaddr='mysql://mnogo:mnogo@/mnogo/';
    $dbmode='single';
}
*/
// which contradicts the manual for never versions

 
$iDoItAsInTheManual = true//Set to false and it works

 
if ($iDoItAsInTheManual)
    {
   
$res=Udm_Find($udm_agent, $q);
    }
  else 
   
// This works:
   
{
   
Udm_Set_Agent_Param($udm_agent,UDM_PARAM_QUERY,$q);
   
$res=Udm_Find($udm_agent,"anything here, makes no difference!!");
    }

 
$url = udm_get_res_field(
                               
$res,         //resource res,
                               
0,                 // int row,
                               
UDM_FIELD_URL     // int field
                               
);
  echo
$url;

 
// Fails if $iDoItAsInTheManual==true, otherwise it works fine

?>

I don't know where something has gone wrong but I hope this may help someone save a little time.
up
0
matt at nowhere dot dot
21 years ago
Here is a small snipet of code that will perform a search on mnogosearch and (in not so pretty a way) display the results.  Note that it appears that UDM_PARAM_FIRST_DOC starts at 1, but perhaps should be 0.
<?php
$searchText
= trim($_GET['search']);
$mnogo = udm_alloc_agent ('mysql://me:secret@localhost/mnogosearch/');
$mResult = udm_find($mnogo,$searchText);
$totalMatches = udm_get_res_param ($mResult,UDM_PARAM_FOUND);
$pageSize = udm_get_res_param ($mResult,UDM_PARAM_NUM_ROWS);
$firstRow = udm_get_res_param ($mResult,UDM_PARAM_FIRST_DOC);
$lastRow = udm_get_res_param ($mResult,UDM_PARAM_LAST_DOC);
echo
"Your search for <b>$searchText</b> resulted in <b>$totalMatches</b> matches";
echo
"The result set (pagesize) is <b>$pageSize</b>\n";
echo
"The first doc is row <b>$firstRow</b> and the last doc is <b>$lastRow</b>\n";
$row=0;
for (
$i=$firstRow-1;$i<$lastRow;$i++) {
   
$row++;
    echo
"Match $row:";
    echo
'Url: ';
   
$url = udm_get_res_field ($mResult,$i,UDM_FIELD_URL);
    echo
"<a href=\"$url\">$url</a>";
    echo
"\nTitle: <b>";
    echo
udm_get_res_field ($mResult, $i,UDM_FIELD_TITLE);
    echo
"</b>\nMeta Desc:";
    echo
udm_get_res_field ($mResult, $i,UDM_FIELD_DESC);
    echo
"\nPage Text: <b>\n";
    echo
udm_get_res_field ($mResult, $i,UDM_FIELD_TEXT);
    echo
"</b>\n<hr>\n";
}
udm_free_res($mResult);
udm_free_agent($mnogo);
?>
To Top