udm_find

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

udm_findВыполнить поиск

Описание

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

Выполнить поиск.

Собственно поиск. Первый аргумент - сессия. Второй - поисковый запрос. Для поиска просто введите нужные слова и нажмите кнопку "SUBMIT". К примеру "mysql odbc". В запросе не надо использовать кавычки, тут они только для выделения запроса в остальном тексте. mnoGoSearch найдет все документы, содержащие слово "mysql" и/или слово "odbc". Наиболее релевантные документы будут иметь больший вес и будут показаны первыми. Если используется режим поиска ALL (ВСЁ), то будут возвращены документы содержащие все введенные слова. Если используется режим ANY (ЛЮБОЙ), то будут возвращены документы, содержащие хотя бы одно из заданных слов. Для более тонкой настройки поиска можно использовать специальный язык запросов. Тогда в форме поиска надо выбрать режим "bool".

Список параметров

agent

Идентификатор ресурса агента, полученный из udm_alloc_agent().

query

mnoGoSearch понимает следующие логические выражения:

& - логическое И. Например для "mysql & odbc" mnoGoSearch найдет все URL, содержащие оба слова "mysql" и "odbc".

| - логическое ИЛИ. Например для "mysql|odbc" mnoGoSearch найдет все URL, содержащие одно из слов "mysql" или "odbc", или оба сразу.

~ - логическое НЕТ. Например для "mysql & ~odbc" mnoGoSearch найдет все URL, содержащие слово "mysql" и не содержащие слово "odbc". Обратите внимание, что ~ просто исключает заданное слово из результатов. Запрос "~odbc" не найдет ничего!

() - команда группировки для создания сложных запросов. Например "(mysql | msql) & ~postgres" означает, что надо найти все URL, содержащих mysql или mssql, но ни в коем случае не postgres.

Возвращаемые значения

Возвращает идентификатор результата поиска или FALSE в случае возникновения ошибки.

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