Go Back   vb.org Archive > vBulletin 3 Discussion > vB3 General Discussions
FAQ Community Calendar Today's Posts Search

 
 
Thread Tools Display Modes
Prev Previous Post   Next Post Next
  #1  
Old 06-03-2002, 04:18 AM
DarkReaper DarkReaper is offline
 
Join Date: Oct 2001
Posts: 429
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default Using indexpost() on non-vB Pages...

I'm writing a news system that inserts news into vBulletin for comments, and am having trouble getting the posts to be indexed for searching. I'm not including any vB files, so I copied the indexpost() function over and had it switch databases to the forums DB to index it. However, it's not indexing the posts...

PHP Code:
// ###################### Start indexpost #######################
function indexpost($postid) {
  global 
$DB_site;
  
$minsearchlength 3;
  
$maxsearchlength 18;

  echo 
"val = $val<br>";


  
$DB_site->select_db($forumdbname);


  
$post=$DB_site->query_first("SELECT postid,threadid,title,pagetext FROM post WHERE postid='$postid'");


    
$threadinfo=$DB_site->query_first("SELECT title FROM thread WHERE threadid=$post[threadid]");
    
//$post[title].=" ".$threadinfo[title];

    // What is the point of this?///////
    
$firstpst[$post[threadid]]=$postid;
    
////////////////////////////////////

    
$titlewords=trim($threadinfo[title]);
    
$titlewords=ereg_replace("[\n\t\r,]"," ",$titlewords);
     
$titlewords=preg_replace("/(\.+)($| |\n|\t)/s"" "$titlewords);
     
$titlewords=str_replace("["" ["$titlewords);
     
$titlewords=str_replace("]""] "$titlewords);
     
$titlewords=preg_replace("/[\(\)\"':;\[\]?!#{}_\-+\\\\]/s","",$titlewords);
     
$titlewords=strtolower(trim(str_replace("  "," ",$titlewords)));
     
$titlewordarray=explode(" ",$titlewords);
     while (list(
$key,$val)=each($titlewordarray)) {
         echo 
"val = $val<br>";
       
$titlearray[$val]=1;
     }


  
$allwords=$post[title]." ".$post[pagetext];
  
$allwords=preg_replace("/[\n\t\r,]/s"," ",$allwords);
  
$allwords=preg_replace("/(\.+)($| |\n|\t)/s"" "$allwords);
  
$allwords=str_replace("["" ["$allwords);
  
$allwords=str_replace("]""] "$allwords);
  
$allwords=preg_replace("/[\(\)\"':;\[\]?!#{}_\-+\\\\]/s","",$allwords);
  
$allwords=strtolower(trim(str_replace("  "," ",$allwords)));
  if (
$titlewords)
    
$allwords.=" ".$titlewords;
  
$wordarray=explode(" ",$allwords);


  
$getwordidsql="title IN ('".str_replace(" ","','",$allwords)."')";
  
$words=$DB_site->query("SELECT wordid,title FROM word WHERE $getwordidsql");

  while (
$word=$DB_site->fetch_array($words)) {
    
$wordcache[$word[title]]=$word[wordid];
  }
  
$DB_site->free_result($words);

  
$insertsql="";
  
$newwords="";

  echo 
"val = $val<br>";
  echo 
"worddone[val] = $worddone[$val]<br>";

    if (
$val!=""  and !$worddone[$val]) {
      
$worddone[$val]=1// Ok we have added this word
      
if (isset($wordcache[$val])) { // Does this word already exist in the word table?
        
if (isset($titlearray[$val]))
          
$intitle=1;
        else
          
$intitle=0;
        
$insertsql.=",($wordcache[$val],$postid,$intitle)"// yes so just add a searchindex entry for this post/word
        
echo "insertsql is now $insertsql<br>";
        
flush();
      } else {
        if (isset(
$titlearray[$val]))
        {
          
$newtitlewords.=$val." ";
          echo 
"Added $val to the title table<br>";
          
flush();
        }
        else
        {
          
$newwords.=$val." "// No so add it to the word table
          
echo "Added $val to the word table<br>";
          
flush();
        }
      }
    }


  

  if (
$insertsql!="") {
    
$insertsql=substr($insertsql,1);
    
$DB_site->query("REPLACE INTO searchindex (wordid,postid,intitle) VALUES $insertsql");
  }

  if (
$newwords) {
    
$newwords=trim($newwords);
    
$insertwords="(NULL,'".str_replace(" ","'),(NULL,'",addslashes($newwords))."')";
    
$DB_site->query("INSERT IGNORE INTO word (wordid,title) VALUES $insertwords");
    
$selectwords="title IN('".str_replace(" ","','",addslashes($newwords))."')";
    
$DB_site->query("INSERT IGNORE INTO searchindex (wordid,postid) SELECT DISTINCT wordid,$postid FROM word WHERE $selectwords");
   }

   if (
$newtitlewords) {
     
$newtitlewords=trim($newtitlewords);
     
$insertwords="(NULL,'".str_replace(" ","'),(NULL,'",addslashes($newtitlewords))."')";
     
$DB_site->query("INSERT IGNORE INTO word (wordid,title) VALUES $insertwords");
     
$selectwords="title IN('".str_replace(" ","','",addslashes($newtitlewords))."')";
     
$DB_site->query("REPLACE INTO searchindex (wordid,postid,intitle) SELECT DISTINCT wordid,$postid,1 FROM word WHERE $selectwords");
   }

   
$DB_site->select_db($dbname);

What am I doing wrong?

Edit: Oh, btw..the echos were there to help me debug..didn't work very well...$val was empty on those echos, except for in the loop...$worddone[$val] was always empty...
Reply With Quote
 


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT. The time now is 01:43 AM.


Powered by vBulletin® Version 3.8.12 by vBS
Copyright ©2000 - 2025, vBulletin Solutions Inc.
X vBulletin 3.8.12 by vBS Debug Information
  • Page Generation 0.05349 seconds
  • Memory Usage 2,980KB
  • Queries Executed 12 (?)
More Information
Template Usage:
  • (1)SHOWTHREAD
  • (1)ad_footer_end
  • (1)ad_footer_start
  • (1)ad_header_end
  • (1)ad_header_logo
  • (1)ad_navbar_below
  • (1)ad_showthread_beforeqr
  • (1)bbcode_php
  • (5)bbcode_quote
  • (1)footer
  • (1)forumjump
  • (1)forumrules
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (1)navbar
  • (3)navbar_link
  • (120)option
  • (21)post_thanks_box
  • (21)post_thanks_button
  • (1)post_thanks_javascript
  • (1)post_thanks_navbar_search
  • (21)post_thanks_postbit_info
  • (21)postbit
  • (21)postbit_onlinestatus
  • (21)postbit_wrapper
  • (1)showthread_list
  • (1)spacer_close
  • (1)spacer_open
  • (1)tagbit_wrapper 

Phrase Groups Available:
  • global
  • inlinemod
  • postbit
  • posting
  • reputationlevel
  • showthread
Included Files:
  • ./showthread.php
  • ./global.php
  • ./includes/init.php
  • ./includes/class_core.php
  • ./includes/config.php
  • ./includes/functions.php
  • ./includes/class_hook.php
  • ./includes/modsystem_functions.php
  • ./includes/functions_bigthree.php
  • ./includes/class_postbit.php
  • ./includes/class_bbcode.php
  • ./includes/functions_reputation.php
  • ./includes/functions_threadedmode.php
  • ./includes/functions_post_thanks.php 

Hooks Called:
  • init_startup
  • init_startup_session_setup_start
  • init_startup_session_setup_complete
  • cache_permissions
  • fetch_postinfo_query
  • fetch_postinfo
  • fetch_threadinfo_query
  • fetch_threadinfo
  • fetch_foruminfo
  • style_fetch
  • cache_templates
  • global_start
  • parse_templates
  • global_setup_complete
  • showthread_start
  • showthread_getinfo
  • forumjump
  • showthread_post_start
  • showthread_query_postids_threaded
  • showthread_threaded_construct_link
  • showthread_query
  • bbcode_fetch_tags
  • bbcode_create
  • showthread_postbit_create
  • postbit_factory
  • postbit_display_start
  • post_thanks_function_post_thanks_off_start
  • post_thanks_function_post_thanks_off_end
  • post_thanks_function_fetch_thanks_start
  • post_thanks_function_fetch_thanks_end
  • post_thanks_function_thanked_already_start
  • post_thanks_function_thanked_already_end
  • fetch_musername
  • postbit_imicons
  • bbcode_parse_start
  • bbcode_parse_complete_precache
  • bbcode_parse_complete
  • postbit_display_complete
  • post_thanks_function_can_thank_this_post_start
  • tag_fetchbit_complete
  • forumrules
  • navbits
  • navbits_complete
  • showthread_complete