Алгоритм поиска

Алексей16 лет в сервисе
Данные заказчика будут вам доступны после подачи заявки
05.04.2010

Добрый день.

Существует трекер 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, Битва титанов - название (как видим оригинального может просто не быть)

[] - доп информация, в данном случае кол-во картинок и их формат

Название раздачи может выглядеть и так:

Аватар. Новая сага

Аватар: Последняя битва

т.е. варианты написания названий бывают разные и зависят от фантазии создателей фильмов, игр и т.д.

И все эти раздачи связаны, т.е. при выборе любой из них, должны найтись другие.

Не должно сильно нагружать БД и ПХП, то есть возможно некий кеш использовать, если он будет, конечно, оправдан.

Исходя из выше описанного возможно есть смысл отбрасывать информацию в скобках (круглых или квадратных) и всё что за ними.

Выделять названия из оставшейся части по слешам.

Искать по каждоуму из них.

Если название составное Аватар: Последняя битва

то и его делаит на части и искать по каждой или только по первой.

Это первое самое простое что пришло в голову, т.к. не знаю теории по алгоритмам поиска и ранжированию результатов.

Пишите цену и срок выполнения. При помощи чего реализуете и каким способом.