PHP Doku:: Führe eine Suche durch. - function.udm-find.html

Verlauf / Chronik / History: (12) anzeigen

Sie sind hier:
Doku-StartseitePHP-HandbuchFunktionsreferenzSuchmaschinenerweiterungenmnoGoSearchmnoGoSearch Funktionenudm_find

Ein Service von Reinhard Neidl - Webprogrammierung.

mnoGoSearch Funktionen

<<udm_error

udm_free_agent>>

udm_find

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

udm_findFühre eine Suche durch.

Beschreibung

resource udm_find ( resource $agent , string $query )

Gibt bei Erfolg einen Suchergebniszeiger zurück, FALSE bei einem Fehler.

Die eigentliche Suche. Das erste Argument - die Session, das nächste - die Suche selbst. Um etwas zu finden, einfach die zu suchenden Begriffe in das Suchfeld eintippen und den Submit-Button drücken. Zum Beispiel "mysql odbc". Die doppelten Anführungszeichen " sollten nicht in einer Suche verwendet werden, sie werden hier nur aufgeführt, um die Suchbegriffe vom anderen Text zu unterscheiden. mnoGoSearch wird alle Dokumente finden, die das Wort "mysql" und/oder "odbc" enthalten. Dokumente, die der Suche besser entsprechen als andere werden zuerst angezeigt. Wird der Suchmodus ALL verwendet, werden nur Dokumente gefunden, die alle gesuchten Wörter mindestens einmal enthalten. Wird der Suchmodus ANY verwendet, werden alle Dokumente zurückgliefert, die eines der gesuchten Wörter enthalten. Wenn ausgefeiltere Suchen stattfinden sollen, muss die Suchsprache verwendet werden. In diesem Falle sollte der boolsche Übereinstimmungsmodus gewählt werden.

mnoGoSearch kennt die folgenden boolschen Operatoren:

& - logisches UND. Zum Beispiel "mysql & odbc". mnoGoSearch wird alle Dokumente finden, die sowohl "mysql" als auch "odbc" enthalten.

| - logisches ODER. Zum Beispiel "mysql|odbc". mnoGoSearch wird alle Dokumente zurückliefern die das Wort "mysql" oder das Wort "odbc" enthalten.

~ - logisches NICHT. Zum Beispiel "mysql & ~odbc". mnoGoSearch wird alle Dokumente finden, die das Wort "mysql" enthalten, nicht aber das Wort "odbc" zur gleichen Zeit. Dieser Operator ist jedoch ein rein ausschließender Operator. Die Suche "~odbc" wird keine Ergebnisse zurückliefern!

() - Gruppierung, um komplexe Suchen zu bilden. Zum Beispiel "(mysql | msql) & ~postgres". Die Suchesprache ist simpel und stark zugleich.


2 BenutzerBeiträge:
- Beiträge aktualisieren...
sm_dev_mnogo at u5 dot com
20.11.2003 12:02
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.
matt at nowhere dot dot
23.12.2002 19:50
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);
?>



PHP Powered Diese Seite bei php.net
The PHP manual text and comments are covered by the Creative Commons Attribution 3.0 License © the PHP Documentation Group - Impressum - mail("TO:Reinhard Neidl",...)