In fact, I should implement a solution according with your thoughts about it, this way
job is done definitely for the tool :)
If you plan to update indexer so it automatically update this table (if exists),
that's nice.
But in the case indexer is killed -15, will he do the job ?
At 12:03 16/02/2001 +0400, Alexander Barkov wrote:
>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"
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 general"
to [EMAIL PROTECTED]