Example #1
0
 public function flushContentBuffer()
 {
     // add fields to doc
     $va_row_sql = array();
     $vn_segment = 0;
     foreach (WLPlugSearchEngineSqlSearch::$s_doc_content_buffer as $vs_key => $va_content_list) {
         foreach ($va_content_list as $vn_i => $va_content) {
             $vn_seq = 0;
             //$va_word_list = is_array($va_content) ? array_flip($va_content) : null;
             $va_word_list = is_array($va_content) ? $va_content : null;
             $va_tmp = explode('/', $vs_key);
             $vn_table_num = (int) $va_tmp[0];
             $vn_row_id = (int) $va_tmp[1];
             $vn_content_table_num = (int) $va_tmp[2];
             $vn_content_field_num = $va_tmp[3];
             $vn_content_row_id = (int) $va_tmp[4];
             $vn_boost = (int) $va_tmp[5];
             $vn_access = (int) $va_tmp[6];
             if (!defined("__CollectiveAccess_IS_REINDEXING__") && $this->can('incremental_reindexing')) {
                 $this->removeRowIndexing($vn_table_num, $vn_row_id, $vn_content_table_num, $vn_content_field_num);
             }
             if (is_array($va_word_list)) {
                 //foreach($va_word_list as $vs_word => $vn_x) {
                 foreach ($va_word_list as $vs_word) {
                     if (!strlen((string) $vs_word)) {
                         continue;
                     }
                     if (!($vn_word_id = (int) $this->getWordID((string) $vs_word))) {
                         continue;
                     }
                     $va_row_sql[$vn_segment][] = '(' . $vn_table_num . ',' . $vn_row_id . ',' . $vn_content_table_num . ',\'' . $vn_content_field_num . '\',' . $vn_content_row_id . ',' . $vn_word_id . ',' . $vn_boost . ',' . $vn_access . ')';
                     $vn_seq++;
                     if (sizeof($va_row_sql[$vn_segment]) > $this->getOption('maxWordIndexInsertSegmentSize')) {
                         $vn_segment++;
                     }
                 }
             } else {
                 // index blank value
                 $va_row_sql[$vn_segment][] = '(' . $vn_table_num . ',' . $vn_row_id . ',' . $vn_content_table_num . ',\'' . $vn_content_field_num . '\',' . $vn_content_row_id . ',0,0,' . $vn_access . ')';
                 $vn_seq++;
                 if (sizeof($va_row_sql[$vn_segment]) > $this->getOption('maxWordIndexInsertSegmentSize')) {
                     $vn_segment++;
                 }
             }
         }
     }
     // add new indexing
     if (sizeof($va_row_sql)) {
         foreach ($va_row_sql as $vn_segment => $va_row_sql_list) {
             if (sizeof($va_row_sql_list)) {
                 $vs_sql = $this->ops_insert_word_index_sql . "\n" . join(",", $va_row_sql_list);
                 $this->opo_db->query($vs_sql);
             }
         }
         if ($this->debug) {
             print "[SqlSearchDebug] Commit row indexing<br>\n";
         }
     }
     // clean up
     //$this->opn_indexing_subject_tablenum = null;
     //$this->opn_indexing_subject_row_id = null;
     WLPlugSearchEngineSqlSearch::$s_doc_content_buffer = array();
     $this->_checkWordCacheSize();
 }
Example #2
0
 public function flushContentBuffer()
 {
     // add fields to doc
     $vn_max_word_segment_size = (int) $this->getOption('maxWordIndexInsertSegmentSize');
     // add new indexing
     if (is_array(WLPlugSearchEngineSqlSearch::$s_doc_content_buffer) && sizeof(WLPlugSearchEngineSqlSearch::$s_doc_content_buffer)) {
         while (sizeof(WLPlugSearchEngineSqlSearch::$s_doc_content_buffer) > 0) {
             $this->opo_db->query($this->ops_insert_word_index_sql . "\n" . join(",", array_splice(WLPlugSearchEngineSqlSearch::$s_doc_content_buffer, 0, $vn_max_word_segment_size)));
         }
         if ($this->debug) {
             Debug::msg("[SqlSearchDebug] Commit row indexing");
         }
     }
     // clean up
     WLPlugSearchEngineSqlSearch::$s_doc_content_buffer = null;
     WLPlugSearchEngineSqlSearch::$s_doc_content_buffer = array();
     $this->_checkWordCacheSize();
 }