Кодировка русских букв

Valick

Новичок
volnistii11, тут вот какое дело. Ты настолько не рядом с программированием, что даже не хочется тратить на тебя время, а всё по причине отсутствия элементарной базовой подготовки. Ты конечно можешь погуглить, что такое Полнотекстовый поиск, Сфинкс и Эластик Сёрч, но боюсь это вряд ли поможет.
Если хочешь кардинально изменить ситуацию отложи свой код на полгодика, начни читать книги и изучи базовую теорию РНР в которой у тебя не будет белых пятен. Даже самый хороший форум максимум, что сможет сделать для тебя - это ответить на твой вопрос, но ни один форум на свете на научит думать.
 

antonio

Moderator
Команда форума
volnistii11, тут вот какое дело. Ты настолько не рядом с программированием....
Я бы так не рубил с плеча, коллега, тем более что новичок пришел за помощью, и это вполне нормально. Если у вас, коллега, не хватает терпения на объяснения прописных истин, то, это сугубо ваши, личные проблемы и это мое сугубо личное мнение о вас.

volnistii11 Полнотекстовый поиск, Сфинкс и Эластик Сёрч - все это естественно тру текнолоджис, но, возможно, новичку будет интереснее и полезнее организовать свой поисковый индекс, основанный на таблице словаря и связей с объектами (записями в других таблицах). Возможно у volnistii11 нет такой явной потребности организовывать полнотекстовый поиск по всему сайту. Итак, попробую прояснить свою мысль. Фанат меня да поправит. Создаем таблицу Vocabulary с двумя полями
id int NOT NULL AUTO_INCREMENT
,word varchar(255) NOT NULL
построим составной уникальный индекс по этим двум полям. Данная таблица будет словарем и будет содержать только слова.
Вторая таблица Vocabulary_Index будет состоять из двух полей
object_id int NOT NULL
word_id int NOT NULL
По данным полям также строим составной не уникальный индекс. Данная таблица будет связывать наши сущности (товары, каталоги, новости и т.д. и т.п. по object_id со словами словаря. Что делать со склонениями и падежами, т.е. окончаниями слов? Все просто. Можно подойти к данному вопросу эмпирически и объявить, что у слов длинной от 4 до 5 символов мы отбросим последнюю букву, у слов длиной от 6 до 9 символов - две последние буквы, а у слов от 10 символов и более - 3 последние буквы. Слова, длина который менее 3-х символов вообще не будем вносить в таблицу словаря.
Алгоритм построения индекса весьма прост. Берем текст, разбиваем его на слова, игнорируем слова длиной менее 3-х символов, применяем вышеописанный алгоритм обрезки слов, Проверяем наличие слова в словаре, если его нет, то добавляем, получаем его id, если слово есть, то берем его id и создаем запись в таблице Vocabulary_Index с id сущности и нашим словом.
Собственно все.
P.S. Можно даже применить простейший алгоритм релевантного поиска. Наиболее подходящие сущности будут содержать максимальное число найденных слов - это тоже получено эмпирически. Я так строил базу нормативных документов а ля "Гарант, Консультант" для среднего банка, все прекрасно работало и находилось. Словарь содержал порядка 30 000 слов, индекс содержал порядка 1 200 000 записей.

P.P.S. Ах, да, забыл про числительные, левые символы, английский язык. Если они не нужны, то такие слова просто игнорируем, если нужны, то целиком, без обрезки вносим в словарь.
 
Последнее редактирование:

Valick

Новичок
Я бы так не рубил с плеча, коллега, тем более что новичок пришел за помощью, и это вполне нормально.
Я как акын, что вижу - то пою. И "пою" я не про конкретный топик, а так сказать про "общую температуру по больнице" топикам ТС.
И само собой то, что я пишу - это тоже моё сугубо личное мнение. ТС никто не запрещает послать меня куда подальше и продолжать двигаться в выбранном направлении (читай топтаться на месте). ;)
 
Сверху