Разработать функциональность быстрого поиска на большом форуме? - PullRequest
1 голос
/ 20 июля 2009

Я строю форум с нуля на PHP. Я использовал большую часть структуры базы данных phpBB: s.

Но теперь я думаю о функциональности поиска? Что такое хороший дизайн, чтобы можно было действительно быстро искать во всех сообщениях. Я думаю, должен быть какой-то лучший способ, чем просто% query_string% в mysql:)

Может быть, разбить все предложения на слова, пусть слова будут ключами в хэш-таблице, а значение будет разделенным запятыми списком всех постов, в которых находится слово? Тогда у вас будет немного больше проблем, если вы удалите сообщение, но я думаю, что такой подход лучше.

С самого начала, я думаю, я могу использовать простое решение, но я не хочу менять код, когда форум становится больше.

Спасибо за любые идеи или если вы можете указать мне правильное направление!

Ответы [ 4 ]

4 голосов
/ 20 июля 2009

Zend Lucene - это мощный способ добавить поиск на сайт PHP.

Вот статья о том, как это сделать: Сверните свою собственную поисковую систему с Zend_Search_Lucene

1 голос
/ 20 июля 2009

Не изобретай велосипед. Посмотрите на Lucene. Также есть порт для php:

Zend Lucene

Lucene выполняет для вас разбор и индексацию, а запросы выполняются молниеносно.

1 голос
/ 20 июля 2009

Лучший вариант для меня сегодня - поиск сфинксов . Его можно использовать с php, rails, perl и до сих пор для меня работало как шарм. Вы можете проверить php решение . Craiglist, например, использовать его.

0 голосов
/ 20 июля 2009

Большинство пользователей форума захотят больше, чем просто поиск по строке. Они могут не знать точную фразу, в которой они нуждаются, и когда они ищут «поиск по форуму», они будут рады найти результат для «Как выполнить поиск по форуму», который содержит соответствующие термины, но в другом порядке и разделен другими словами .

Им также может понадобиться нечеткий поиск, если они не знают написания того, что им нужно. Они могут искать "sequal" и хотят "sql".

Все это указывает на более сложное решение, чем ваш подобный поиск.

Самый важный указатель на данный момент заключается в том, что независимо от того, что вы реализуете, вы должны быть уверены, что его легко переключить в пользу чего-то лучшего позже. Убедитесь, что ваш поиск поддерживает «горячую» замену, поскольку вы знаете, что хотите изменить его позже.

...