May I  suggest? Probably it will be more useful to create a separate 
table with one column and one raw and store current documents number
there:

CREATE TABLE ndocs (ndocs int);

Then after every reindexing run this:

DELETE FROM ndocs;
INSERT INTO ndocs SELECT count(*) FROM url WHERE .....


  You may write a script which will run indexer and then 
  execute these queries. Or you may also  add these queries execition
  into crontab.


Then in search.php use:

SELECT ndocs FROM ndocs   

  to get last calculated doc number. It will be much faster when 
  count(*) with WHERE clause.






Laurent LEVIER wrote:
> 
> Ok, I will change my query with the first one.
> 
> After a test, yes it slows the display of the page. So I changed a bit my howto.
> 
> I removed the init.inc changes and put into template.inc after the 
>lang_url_translation treatment:
> 
>     // ----------------------------------------------------------------------
>     // Laurent LEVIER changes to add NU code to return number of indexed URLs
>     // ----------------------------------------------------------------------
>     if (ereg('\$NU',$str))
>     {
>        $query ="SELECT count(*) FROM url WHERE status IN (200,304)";
> 
>        if($DEBUG) echo "last_parse(): ",$query,"<BR><HR>";
> 
>        if (!$res=db_query($query)) print_error_local('Query error: '.$query."\n<
> BR>".db_error());
> 
>        $numurlsdb="10";
>        if ($row=db_fetchrow($res))
>        { $numurlsdb=$row[0]; }
> 
>        db_freeresult($res);
> 
>        $str=ereg_replace('\$NU', $numurlsdb, $str);
>     }
> 
>     // ----------------------------------------------------------------------
>     // Laurent LEVIER changes to add NU code to return number of indexed URLs
>     // ----------------------------------------------------------------------
> 
> Works also fine, and have the advantage to be included easily. Only activated when 
>you request the feature :)
> 
> @+/L
> 
> At 12:41 15/02/2001 +0400, Alexander Barkov wrote:
> 
> >This "SELECT count(*) FROM url" will mean the TOTAL number
> >of documents. Note that it is actually not the number of
> >searchable documents, because some of them may be not indexed yet
> >when database is being populated during first indexing.
> >
> >
> >
> >Probably
> >  "SELECT count(*) FROM url WHERE status IN (200,304)"
> >or
> >  "SELECT count(*) FROM url WHERE docsize>0"
> >
> >will be closer to the number of searchable documents, but this will work
> >slowly.
> >
> >
> > Also note that not all databases return count(*) quickly like MySQL,
> >for
> >example, PostgreSQL will scan whole table to calculate the count.
> >
> >We'll add new template variable responsible  for this, but it seems
> >it will be useful with MySQL only.
> >
> >
> >
> >Laurent LEVIER wrote:
> >>
> >> Hi Guys,
> >>
> >> I wished to display the number of indexed URLs. To be able to do this nicely 
>(using templates), I did the following changes:
> >>
> >> *** in init.inc, in the global variables declarations, i added:
> >> global $numurlsdb;
> >>
> >> *** Then, after
> >> 
>db_init($dbtype,$dbname,$dbhost,$dbuser,$dbpass,$dbport,$dbodbc,$dbodbc_cursor_type);
> >>
> >>    if  ($db_format == '3.1') {
> >>       $cs=load_cs($cat);
> >>       $cp=load_cp($cat);
> >>    }
> >>
> >> *** I added:
> >>    // ----------------------------------------------------------------------
> >>    // Laurent LEVIER changes to add NU code to return number of indexed URLs
> >>    // ----------------------------------------------------------------------
> >>
> >>    $query ="SELECT count(*) from url";
> >>
> >>    if($DEBUG) echo "last_parse(): ",$query,"<BR><HR>";
> >>
> >>    if (!$res=db_query($query)) print_error_local('Query error: 
>'.$query."\n<BR>".db_error());
> >>
> >>    $numurlsdb="10";
> >>    if ($row=db_fetchrow($res)) {
> >>     $numurlsdb=$row[0];
> >>    }
> >>
> >>    db_freeresult($res);
> >>
> >> *** To parse the data nicely, I changed template.inc:
> >>
> >> *** I added in all the ereg_replace a new one. I put it after 
>lang_url_translation:
> >>
> >>     $str=ereg_replace('\$NU', $numurlsdb, $str);
> >>
> >> *** and of course, the global declaration in the print_template function:
> >>
> >> global $numurlsdb;
> >>
> >> 
>***************************************************************************************
> >> It works fine. In my case, adding this in the top section of the template:
> >> $NU URLs exists in the database.
> >>
> >> This new keyword is now replaced with the number of urls in table url.
> >>
> >> As this query is SQL92 conformant, it should work everywhere, so no need to deal 
>with SQL server format.
> >>
> >> Please confirm this represent the real number of URL that can be searched.
> >>
> >> Enjoy!
> >>
> >> Laurent LEVIER
> >> IT Systems & Networks, Unix System Engineer
> >> Security Specialist
> >>
> >> Argosnet Security Server : http://www.Argosnet.com
> >> "Le Veilleur Technologique", "The Technology Watcher"
> 
> Laurent LEVIER
> IT Systems & Networks, Unix System Engineer
> Security Specialist
> 
> Argosnet Security Server : http://www.Argosnet.com
> "Le Veilleur Technologique", "The Technology Watcher"
______________
If you want to unsubscribe send "unsubscribe udmsearch"
to [EMAIL PROTECTED]

Reply via email to