IvanShumkov
Новичок
Индексация текста
Перерыл весь форум, но не нашел ничего толкового по теме созадния индекса, для последующего поиска.
Вроде сложностей никаких нет. Парсим текст. Удаляем лишние символы, стоп и короткие слова. И получаем масив с пригодными для индекса словами. Проблема заключается в том, что я не могу придумать, как как ставить количество повторнений слова в тексте.
-~{}~ 03.03.05 23:52:
Может быть вот-так? Но как-то не очень изящно выглядит.
Перерыл весь форум, но не нашел ничего толкового по теме созадния индекса, для последующего поиска.
Вроде сложностей никаких нет. Парсим текст. Удаляем лишние символы, стоп и короткие слова. И получаем масив с пригодными для индекса словами. Проблема заключается в том, что я не могу придумать, как как ставить количество повторнений слова в тексте.
-~{}~ 03.03.05 23:52:
Может быть вот-так? Но как-то не очень изящно выглядит.
PHP:
// Чистим текст
$text = preg_replace("/<[^>]*>/s", " ", $text);
$text = preg_replace("/<!--.*?-->/s", " ", $text);
$text = preg_replace_callback("/&[a-zA-Z0-9#]*?;/", array("Indexer", "_esc2char"), $text);
$text = preg_replace("/[^a-zA-Zа-яА-Я0-9 ]/", " ", $text);
$text = preg_replace("/\s+/s", " ", $text);
$text = strtolower($text);
// Парсим текст
$wordsTemp = array();
$pos = 0;
while (1)
{
$newPos = strpos($text, " ", $pos);
if ($newPos === false)
{
$word = substr($text, $pos);
if ((strlen($word) > 3) && !array_key_exists($word, $this->stopWords)) @$words[$word]++;
break;
}
$word = substr($text, $pos, $newPos - $pos);
if ((strlen($word) > 3) && !array_key_exists($word, $this->stopWords)) @$words[$word]++;
$pos = $newPos + 1;
}