Библиотека для cis, online, cms1
This commit is contained in:
commit
3c2e614d87
269 changed files with 39854 additions and 0 deletions
86
core/search/index.php
Normal file
86
core/search/index.php
Normal file
|
|
@ -0,0 +1,86 @@
|
|||
<?php
|
||||
|
||||
require_once 'core/search/htmlhelper.php';
|
||||
require_once 'core/search/stemmer.php';
|
||||
require_once 'core/path.php';
|
||||
|
||||
/**
|
||||
* Èíäåêñèðîâàíèå ôàéëîâ
|
||||
*/
|
||||
class Index
|
||||
{
|
||||
const ARRAY_FILE = 0;
|
||||
const ARRAY_TEXT = 1;
|
||||
|
||||
public $index = array ();
|
||||
public $text = array ();
|
||||
protected $count = 0;
|
||||
|
||||
function getTitle ($content) {
|
||||
$title = "'<title[^>]*?>(.*?)</title>'si";
|
||||
preg_match($title, $content, $matches);
|
||||
if(isset($matches[1])) {
|
||||
return $matches[1];
|
||||
}
|
||||
return "";
|
||||
}
|
||||
|
||||
// Âûáèðàåì îñíîâó ñëîâà
|
||||
function clean ($word)
|
||||
{
|
||||
return Stemmer::russian(strtolower($word));
|
||||
}
|
||||
|
||||
function process ($base, $files)
|
||||
{
|
||||
$path = new Path($base);
|
||||
// Ñïèñîê äîêóìåíòîâ
|
||||
foreach ($path->getContentRec($files) as $file) {
|
||||
$content = file_get_contents ($file);
|
||||
$text = stripText($content);
|
||||
// $title = self::getTitle ($content);
|
||||
$title = pathinfo($file, PATHINFO_BASENAME);
|
||||
// echo $file, "\n";
|
||||
// Ñïèñîê ñëîâ â äîêóìåíòå
|
||||
$list = tokenize($text);
|
||||
foreach ($list as $word) {
|
||||
$preword = self::clean($word);
|
||||
if (isset($this->index[$preword])) {
|
||||
$index = $this->index[$preword];
|
||||
if ( ! in_array ($this->count, $index)) $this->index[$preword] [] = $this->count;
|
||||
} else {
|
||||
// Íå çàïèñûâàåì ñëîâà äëèííà êîòîðûõ ìåíüøå 2
|
||||
if (strlen($preword) > 1) {
|
||||
$this->index[$preword] = array ($this->count);
|
||||
}
|
||||
}
|
||||
}
|
||||
$this->text [] = array ($title, $path->relPath ($file), $text);
|
||||
$this->count ++;
|
||||
}
|
||||
ksort($this->index);
|
||||
}
|
||||
|
||||
/**
|
||||
* Ñîõðàíåíèå ðåçóëüòàòà ïîèñêà
|
||||
*/
|
||||
function saveData ($file)
|
||||
{
|
||||
$file = fopen($file, "w");
|
||||
// Êîëè÷åñòâî ñëîâ è òåêñòîâ
|
||||
fwrite ($file, pack("SS", count($this->index), count($this->text)));
|
||||
foreach ($this->index as $word => $value) {
|
||||
$length = strlen($word);
|
||||
array_unshift ($value, "SSa*S*", $length, count($value), $word);
|
||||
fwrite($file, call_user_func_array ('pack', $value));
|
||||
}
|
||||
|
||||
foreach ($this->text as $text) {
|
||||
fwrite($file, pack("SSSa*a*a*",
|
||||
strlen($text[0]), strlen($text[1]), strlen($text[2])
|
||||
, $text[0], $text[1], $text[2]));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
||||
Loading…
Add table
Add a link
Reference in a new issue