PHP 7.3.14 Released

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

検索を行います。

検索を行います。最初の引数はセッション、次の引数はクエリ本体です。 検索の実行は、探す単語を入力し、投稿ボタンを押すだけで可能です。 例えば、"mysql odbc"。この例で引用符は他のテキストから区別するために 使用されており、クエリに引用符 " を使用する必要はありません。 mnoGoSearch は、単語 "mysql" および/または単語 "odbc" を含む全ての 文書を見付けます。最も大きな重みを有する文書が最初に表示されます。 検索モードに ALL を使用している場合、検索は入力した単語(とその他の 単語)を共に含む文書を返します。モードANYを使用している場合、検索は、 入力した単語のどれかを含む文書のリストを返します。より高度な結果を 得たい場合には、クエリ言語を使用することも可能です。この場合は、 検索フォームで検索モード "bool" を選択する必要があります。

パラメータ

agent

udm_alloc_agent() をコールした際に得られたエージェント ID へのリンク。

query

mnoGoSearch では次の論理演算子が使用可能です。

& - 論理積。例えば、"mysql & odbc"。 mnoGoSearch は、単語 "mysql" および単語 "odbc" を含む全ての URL を見付けます。

| - 論理和。例えば、"mysql|odbc"。 mnoGoSearch は、単語 "mysql" または単語 "odbc"を含む全ての URL を見付けます。

~ - 論理否定。例えば、"mysql & ~odbc"。 mnoGoSearch は、単語 "mysql" を含み、同時に単語 "odbc" を含まない全てのURLを探します。~ は、指定した単語を 結果から除外するだけであることに注意してください。クエリ "~odbc" は何も見付けません!

() - より複雑なクエリを作成するためのグループ化コマンド。例えば、 "(mysql | msql) & ~postgres"。クエリ言語は、簡単であり、 同時に強力です。クエリは通常の論理式と同等と考えてください。

返り値

成功した場合に結果リンク ID、失敗した場合に FALSE を返します。

add a note add a note

User Contributed Notes 2 notes

up
1
matt at nowhere dot dot
17 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);
?>
up
1
sm_dev_mnogo at u5 dot com
16 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.
To Top