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(); }
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(); }