Tonu, thanks for helping us!
We'll add this patch into 3.2.0
sources.


Tonu Samuel wrote:
> 
> Forry for my total lazyness. This patch works for me and makes some
> small things better to my viewpoint. I discovered that udmsearch deletes
> records in mutli-crc mode from all those ndictxx tables one by one. If
> you do such definition in MySQL as shown below, mnogosearch can delete
> from all tables with single DELETE command:
> 
> CREATE TABLE `merged_ndict` (
> `url_id` mediumint(8) unsigned NOT NULL default '0',
> `word_id` int(11) default NULL,
> `intag` int(11) default NULL,
> KEY `url_id` (`url_id`),
> KEY `word_id` (`word_id`)
> ) TYPE=MRG_MyISAM
> 
>UNION=(ndict2,ndict3,ndict4,ndict5,ndict6,ndict7,ndict8,ndict9,ndict10,ndict11,ndict12,ndict16,ndict32)
> 
> And there is a patch attached for mnogosearch too (sorry, it is
> reversed). This patch eliminates those extra DELETEs and additionally
> speeds up some MySQL INSERTs by adding "DELAYED" keyword to them.
> 
>      T�nu
> 
>   ------------------------------------------------------------------------
> diff -urN mnogosearch-3.1.16/src/sql.c mnogosearch-3.1.17/src/sql.c
> --- mnogosearch-3.1.16/src/sql.c        Tue Jul  3 06:57:27 2001
> +++ mnogosearch-3.1.17/src/sql.c        Wed Jun 13 13:56:46 2001
> @@ -2165,10 +2165,6 @@
>                 }
>                 break;
>         case UDM_DBMODE_MULTI_CRC:
> -               sprintf(qbuf,"DELETE FROM merged_ndict WHERE url_id in (%d)",url_id);
> -               sql_query(Indexer,qbuf);
> -               if(UdmDBErrorCode(Indexer->db)) return (IND_ERROR);
> -               /*
>                 for(i=MINDICT;i<MAXDICT;i++){
>                         if(last!=DICTNUM(i)){
>  #ifdef HAVE_ORACLE8
> @@ -2182,7 +2178,7 @@
>                                 if(UdmDBErrorCode(Indexer->db))return(IND_ERROR);
>                                 last=DICTNUM(i);
>                         }
> -               }*/
> +               }
>                 break;
>         case UDM_DBMODE_SINGLE_CRC:
>                 sprintf(qbuf,"DELETE FROM ndict WHERE url_id=%d",url_id);
> @@ -2217,10 +2213,6 @@
>                 strcpy(tablename,"ndict");
>         }
> 
> -       sprintf(qbuf,"DELETE FROM merged_ndict WHERE url_id in (%d)",url_id);
> -       sql_query(Indexer,qbuf);
> -       if(UdmDBErrorCode(Indexer->db)) return (IND_ERROR);
> -
>         for(n=0;n<NDICTS;n++){
>                 if(prev_dictlen==dictlen[n])continue;
>                 prev_dictlen=dictlen[n];
> @@ -2243,9 +2235,9 @@
>                 }
> 
>                 /* Delete old words */
> -       /*      sprintf(qbuf,"DELETE FROM %s WHERE url_id=%d",tbl_nm,url_id);
> +               sprintf(qbuf,"DELETE FROM %s WHERE url_id=%d",tbl_nm,url_id);
>                 sql_query(Indexer,qbuf);
> -                if(UdmDBErrorCode(Indexer->db))return(IND_ERROR);*/
> +                if(UdmDBErrorCode(Indexer->db))return(IND_ERROR);
> 
>                 /* Insert new word */
>                 if(Indexer->Conf->DBType==UDM_DB_MYSQL){
> @@ -2255,9 +2247,9 @@
> 
>                         qb=(char*)malloc(mlen);
>                         if(Indexer->Conf->DBMode==UDM_DBMODE_MULTI){
> -                               sprintf(qb,"INSERT DELAYED INTO %s 
>(url_id,word,intag) VALUES ",tbl_nm);
> +                               sprintf(qb,"INSERT INTO %s (url_id,word,intag) 
>VALUES ",tbl_nm);
>                         }else{
> -                               sprintf(qb,"INSERT DELAYED INTO %s 
>(url_id,word_id,intag) VALUES ",tbl_nm);
> +                               sprintf(qb,"INSERT INTO %s (url_id,word_id,intag) 
>VALUES ",tbl_nm);
>                         }
>                         qe=qb+strlen(qb);
> 
> @@ -2289,9 +2281,9 @@
>                                                 }
>                                                 /* Init query again */
>                                                 
>if(Indexer->Conf->DBMode==UDM_DBMODE_MULTI){
> -                                                       sprintf(qb,"INSERT DELAYED 
>INTO %s (url_id,word,intag) VALUES ",tbl_nm);
> +                                                       sprintf(qb,"INSERT INTO %s 
>(url_id,word,intag) VALUES ",tbl_nm);
>                                                 }else{
> -                                                       sprintf(qb,"INSERT DELAYED 
>INTO %s (url_id,word_id,intag) VALUES ",tbl_nm);
> +                                                       sprintf(qb,"INSERT INTO %s 
>(url_id,word_id,intag) VALUES ",tbl_nm);
>                                                 }
>                                                 qe=qb+strlen(qb);
>                                                 have_words = 0;
> @@ -2310,9 +2302,9 @@
>                                 len=strlen(Indexer->Word[i].word);
>                                 if (Indexer->Word[i].count && (DICTNUM(len) == 
>dictlen[n])){
>                                         if(Indexer->Conf->DBMode==UDM_DBMODE_MULTI){
> -                                               sprintf(qbuf,"INSERT DELAYED INTO %s 
>(url_id,word,intag) 
>VALUES(%d,'%s',%d)",tbl_nm,url_id,Indexer->Word[i].word,Indexer->Word[i].count);
> +                                               sprintf(qbuf,"INSERT INTO %s 
>(url_id,word,intag) 
>VALUES(%d,'%s',%d)",tbl_nm,url_id,Indexer->Word[i].word,Indexer->Word[i].count);
>                                         }else{
> -                                               sprintf(qbuf,"INSERT DELAYD INTO %s 
>(url_id,word_id,intag) 
>VALUES(%d,%d,%d)",tbl_nm,url_id,UdmStrCRC32(Indexer->Word[i].word),Indexer->Word[i].count);
> +                                               sprintf(qbuf,"INSERT INTO %s 
>(url_id,word_id,intag) 
>VALUES(%d,%d,%d)",tbl_nm,url_id,UdmStrCRC32(Indexer->Word[i].word),Indexer->Word[i].count);
>                                         }
>                                         sql_query(Indexer,qbuf);
>                                         
>if(UdmDBErrorCode(Indexer->db))return(IND_ERROR);
> @@ -3637,10 +3629,6 @@
>                                         }
>                                         break;
>                                 case UDM_DBMODE_MULTI_CRC:
> -                                       sprintf(qbuf,"DELETE FROM merged_ndict WHERE 
>url_id in (%s)",urlin);
> -                                       sql_query(Indexer,qbuf);
> -                                       if(UdmDBErrorCode(Indexer->db)) return 
>(IND_ERROR);
> -                                       /*
>                                         for(i=MINDICT;i<MAXDICT;i++){
>                                                 if(last!=DICTNUM(i)){
>                                                         sprintf(qbuf,"DELETE FROM 
>ndict%d WHERE url_id in (%s)",
> @@ -3649,7 +3637,7 @@
>                                                         
>if(UdmDBErrorCode(Indexer->db))return(IND_ERROR);
>                                                         last=DICTNUM(i);
>                                                 }
> -                                       }*/
> +                                       }
>                                         break;
>                                 case UDM_DBMODE_CACHE:
>
___________________________________________
If you want to unsubscribe send "unsubscribe general"
to [EMAIL PROTECTED]

Reply via email to