Индексирование

hawk1

Новичок
В базе хранятся описания телефонов в поле типа TEXT. Как произвести индексирование, используя словарь?
 

hawk1

Новичок
То есть при добавлении нового телефона должно производиться обновление таблицы, хранящей позиции слов из словаря в документе.
 

hawk1

Новичок
То есть словарь (таблица термов) должен быть запаолнен изначально или его заполнять по мере добавления новой информации? Нужно реализовать булеву модель поиска.
 

fixxxer

К.О.
Партнер клуба
<mod_telepat on>
fulltext?
хотя конечно непонятно какой словарь и что такое "описание" в контексте телефонов
 

hawk1

Новичок
Д\а fulltext. Описание - произвольное текстовое описание.
 

Активист

Активист
Команда форума
Научите меня так говорить))) Пригодиться в жизни, когда приходит налоговая например :)

> Описание - произвольное текстовое описание.
А я думал, описание, это заданное текстовое описание описания, которая вытащена из словаря, состоящего из индекса, который в свою очередь состоит из словаря слов в словаре!

ЗЫ - лучший поиск это sphinx, fulltext - гавно.
 

fixxxer

К.О.
Партнер клуба
Согласен, но ради такой фигни чото жирно сфинкса по моему.
 

Активист

Активист
Команда форума
Не знаю, сфинкс сидит в памяти, есть чуть чуть памяти, простаивает, чего ему жирного надо? По крону запускай раз в час индексатор и не знай проблем. А морфология? Как быть с ней, использовать созвучия в MySQL, но они криво работают с нашим та языком. Настроить сфинкс можно за 10-20 минут. У меня на хосте их масса работает, в топе вижу редко очень.
 

hawk1

Новичок
При заполнении словаря возникли проблеммы. Код такой
$description = preg_replace("[^а-яА-Я]"," ",$mobile_description);
$words = explode(" ",$description);
$opts = array('storage' => PHPMORPHY_STORAGE_FILE,'predict_by_suffix' => true, 'predict_by_db' => true,'graminfo_as_text' => true);
$morphy = new phpMorphy("phpmorphy/dicts","ru_RU",$opts);
// setlocale("LC_ALL","ru_RU");
foreach ($words as $word)
{
$base = $morphy->getBaseForm(strtoupper($word));
echo $base;
$query = "select * from terms where term='$base'";
$result = mysql_query($query);
$number = mysql_num_rows($result);
if ($number == 0)
{
$query1 = "insert into terms(term) values ('$base')";
mysql_query($query1);
$result = mysql_query($query);
}
$word_id = mysql_result($result,0,'term_id');
$query = "insert into inversetable(mobile_id,term_id) values('$mobile_id','$word_id')";
mysql_query($query);
}
echo $base выводит Array.
 

hawk1

Новичок
PHP:
   $description = preg_replace("/^[^а-яА-Я]+$/"," ",$mobile_description);
Все равно не срабатывает. Должны остаться только русските буквы.
 

Mr_Max

Первый класс. Зимние каникулы ^_^
Команда форума
Найди отличия с предыдущим постом самостоятельно
 

hawk1

Новичок
PHP:
   $description = preg_replace("/^[\w]+$/"," ",$mobile_description);
такой варпиант тоже не проходит.
 
Сверху