Алгоритм поиска
Добрый день.
Существует трекер rutor.org
На нём реализована функция "Связанные раздачи". Например еслы вы найдёте Аватар и откроете эту раздачу, то под описанием можно видеть список связанный раздач, например тот же аватар но в другом качестве.
Но там не просто LIKE %...% работает, а достаточно хорошо определяет какая раздача к чему относится. Делается там это автоматически.
Задача сделать нечто подобное.
В общем-то данная вещь уже реализована, но поиск сделан примитивнейший и допускает очень много ошибок.
Поиск происодит по строке с названием. Вот пример строки:
1.
Аватар / Avatar (2009) DVDRip
где
Аватар - название
Avatar - оригинальное название
(2009) - доп. информация, может быть заключена в квадратные скобки и внутри через запятую указана информация
DVDRip - качество, может находиться внутри скобок квадратных
2.
Аватар 2 / Avatar 2 / Аватра 2(на укр. языке) [2010, Джеймс Кэмерон, фантастика, боевик, TS]
где
Аватар 2 - название
Avatar 2 - оригинальное название
Аватра 2(на укр. языке) - предположим что производство фильа украина и это оригинальное название на украинском языке
[] - доп информация
3.
Avatar: New / Аватар: новая часть [что-то]
где
Avatar: New - оригинальное название (слкчайно были перепутаны местами названия, но определение связанных раздач всё равно должно работать)
Аватар: новая часть - название
[] - доп. информация
4. Обложки - Титаник, Аватар, 2012, Битва титанов [1000, jpg] [500, png]
где
Обложки - Титаник, Аватар, 2012, Битва титанов - название (как видим оригинального может просто не быть)
[] - доп информация, в данном случае кол-во картинок и их формат
Название раздачи может выглядеть и так:
Аватар. Новая сага
Аватар: Последняя битва
т.е. варианты написания названий бывают разные и зависят от фантазии создателей фильмов, игр и т.д.
И все эти раздачи связаны, т.е. при выборе любой из них, должны найтись другие.
Не должно сильно нагружать БД и ПХП, то есть возможно некий кеш использовать, если он будет, конечно, оправдан.
Исходя из выше описанного возможно есть смысл отбрасывать информацию в скобках (круглых или квадратных) и всё что за ними.
Выделять названия из оставшейся части по слешам.
Искать по каждоуму из них.
Если название составное Аватар: Последняя битва
то и его делаит на части и искать по каждой или только по первой.
Это первое самое простое что пришло в голову, т.к. не знаю теории по алгоритмам поиска и ранжированию результатов.
Пишите цену и срок выполнения. При помощи чего реализуете и каким способом.