Покинул форум
Сообщений всего: 50
Дата рег-ции: Окт. 2010
Помог: 0 раз(а)
Задумался, как сделать простейший поиск по текстовым файлам.
Допустим, статьи хранятся в каталоге в отдельных файлах.
Задача простая: ввели слово, получили вывод ссылок на страницы, где встретилось это слово.
Есть ли смысл сделать такой поиск с помощью php+grep ?
Или все-таки решить все это стандартными средствами php?
Буду благодарен за ссылку на обучающий мануал по созданию простого поиска.
----- Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
DeepVarvar
Отправлено: 08 Июля, 2011 - 12:28:30
Активный участник
Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008 Откуда: Альфа Центавра
Помог: 353 раз(а)
EuGen пишет:
А лучше
http://sphinxsearch.com/
Ух ты! Какой серьезный зверь! EuGen я бы с удовольствием почитал хорошую статью на русском о том что это за зверь, как его ставить, где использовать, как настраивать...
Я бы даже просил бы вас написать такую статейку, вы хорошо излагаете.
Это без подколок - я на полном серьёзе.
Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007 Откуда: Berlin
Помог: 707 раз(а)
Да я бы рад, только сейчас очень много работы по реструктуризации форума и его оптимизации.
Несколько раз я с нуля разворачивал эту систему, впечатления наилучшие. Описать видимо и правда стоит.
----- Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
DeepVarvar
Отправлено: 08 Июля, 2011 - 12:46:08
Активный участник
Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008 Откуда: Альфа Центавра
Помог: 353 раз(а)
Вообще можно бы сделать на форуме еще один раздел "статьи", ну или на самом портале их продолжать размещать, просто на портале нет возможности комментировать выложенные материалы.
Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007 Откуда: Berlin
Помог: 707 раз(а)
Такой раздел есть - Обсуждение статей.
----- Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
DeepVarvar
Отправлено: 08 Июля, 2011 - 12:49:37
Активный участник
Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008 Откуда: Альфа Центавра
Помог: 353 раз(а)
Я имел виду не одно обсуждение или одни статьи, имелась виду совокупность того и другого. Почитал... и внизу страницы коменты пошли. Удобно и привычно.
Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007 Откуда: Berlin
Помог: 707 раз(а)
Тоже есть.
Ветка уроков. В основном, все полезные статьи у нас там
----- Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
black_ru
Отправлено: 08 Июля, 2011 - 18:08:39
Новичок
Покинул форум
Сообщений всего: 50
Дата рег-ции: Окт. 2010
Помог: 0 раз(а)
Сделал пока с помощью grep. Правда, результат поиска считывается в файл, вдобавок обрабатывается sed и затем другим вызовом с помощью cat выводится.
Наверное, не очень хорошо создавать файл для каждого поискового запроса?
Но скрипт поиска получился буквально из нескольких строк.
А похожую штуку можно средствами php сделать? Я так понимаю, preg_grep
нужно использовать?
И как быть, стандартный системный grep уже сканирует директорию.
А как поступить тут с поиском?
Сканировать директорию, читать файлы, свести все в массив и сравнивать c образцом?
Покинул форум
Сообщений всего: 50
Дата рег-ции: Окт. 2010
Помог: 0 раз(а)
В общем пока сделал так: при создании статьи создается файл index.dat,
в который пишется все заголовки в виде ссылки, каждая с новой строки:
(Я не вижу смысла искать все, что можно в статье, так как это сильно меняет задачу)
В коде запретил ввод спецсимволов и ограничил число вводимых.
Вызвал grep для поиска только целого слова - ключ -w, без учета регистра - ключ -i.
Можно, правда, выводить и без записи в файл для индексации, а искать по всей директории и подавлять вывод ключом -m1, например но так, наверное будет хуже, если будет много запросов.
Работает вроде бы, как мне нужно, но почему-то кажется, что можно еще ускорить процедуру, убрав вообще grep и сделать вывод из файла index.dat через ассоциативный массив.
Но четкой схемы, как это сделать - пока не придумал.
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.