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]