Правила     Закладки     Карма    Календарь    Журналы    Помощь    Поиск    PDA    Чат   
        СМС-ки
   
Пейджер выключен!
Страницы: (3) 1 [2] 3  ( Перейти к первому непрочитанному сообщению )  
Фильтр авторов:    показать 
  скрыть
  Ответ в темуСоздание новой темыСоздание опроса

> Интересная задачка - получить координаты слова, Поиск в большом файле!
Valick  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 5497
Пользователь №: 35718
На форуме: 4 года, 20 дней
Карма: 167




ВиталийОдесса, а БД по вашему это что? Там те же файлы smile.gif
У меня нет ни времени ни желания вас уговаривать.


--------------------
wmr - R281553014107
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
sergeiss  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Сидел он, дум великих полон - и вдаль глядел
******

Профиль
Группа: Эксперт
Группа переписки
Сообщений: 14978
Пользователь №: 4190
На форуме: 8 лет, 10 месяцев, 3 дня
Карма: 444




Цитата (ВиталийОдесса @ 9.09.2016 - 09:41)
на машине крутится только php!


Повторю вопрос:
Цитата (sergeiss @ 9.09.2016 - 08:13)
Для SQLite тоже нет ресурсов?????

и уточню, что SQLite прекрасно работает в ПХП. Гугли.


--------------------
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
PMICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
FatCat  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Чеширский кот
******

Профиль
Журнал
Группа: Администратор
Почтальон группы
Сообщений: 5911
Пользователь №: 1
На форуме: 10 лет, 10 месяцев, 2 дня
Карма: 125

Не пью :
22 года, 3 месяца, 3 дня


Думаю, что запрос к байту в файле будет быстрее. Потому как физически, БД - тоже файл, и тоже запрос к байту в файле; но перед этим еще и запрос к файлу с индексом.


--------------------
Бесплатному сыру в дырки не заглядывают...
PMПисьмо на e-mail пользователюICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Valick  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 5497
Пользователь №: 35718
На форуме: 4 года, 20 дней
Карма: 167




FatCat, индексы создаются один раз, а вот про хранение результата от preg_match_all в теме ничего не сказано, да и подозреваю что такового нет.


--------------------
wmr - R281553014107
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
FatCat  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Чеширский кот
******

Профиль
Журнал
Группа: Администратор
Почтальон группы
Сообщений: 5911
Пользователь №: 1
На форуме: 10 лет, 10 месяцев, 2 дня
Карма: 125

Не пью :
22 года, 3 месяца, 3 дня


Valick
Цитата (ВиталийОдесса @ 8.09.2016 - 20:43)
1 тундра 1144
2 тундра 44545
3 тундра 45666
4 тундра 741758
5 тундра 825527
6 тундра 5241757
....
357 тундра 19000000104
При наличии такого массива, самый быстрый доступ к блоку - прямое обращение к файлу.


--------------------
Бесплатному сыру в дырки не заглядывают...
PMПисьмо на e-mail пользователюICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
S.Chushkin  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Пофигист
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 783
Пользователь №: 36058
На форуме: 3 года, 11 месяцев, 12 дней
Карма: 40




Хм, не думаю что автору нужна БД.
Если я правильно его понял, ТС-у нужен доступ к тексту (данным) по указателю. По сути, это тот же индекс, только специфический.
И тут preg_match_all это самый быстрый и простой способ (в PHP) создать такой индекс. А уж что дальше с ним делать, дело хозяйское.
Использовать же БД для этой задачи, это ... ***. (вместо *** подставить фразу, по смыслу smile.gif )


--------------------
PM
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Valick  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 5497
Пользователь №: 35718
На форуме: 4 года, 20 дней
Карма: 167




FatCat, а я вам говорю, что запрос к БД будет гораздо быстрее, чем создание подобного массива, а затем обращение к байтам файла. Давайте сравнивать "по понятиям" smile.gif


--------------------
wmr - R281553014107
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Valick  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 5497
Пользователь №: 35718
На форуме: 4 года, 20 дней
Карма: 167




Цитата (S.Chushkin @ 9.09.2016 - 11:10)
Хм, не думаю что автору нужна БД.

мы бы это давно узнали, если бы ТС был более разговорчив, и хотя бы из вежливости отвечал на наводящие вопросы.


--------------------
wmr - R281553014107
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
S.Chushkin  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Пофигист
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 783
Пользователь №: 36058
На форуме: 3 года, 11 месяцев, 12 дней
Карма: 40




Цитата (Valick @ 9.09.2016 - 12:20)
мы бы это давно узнали, если бы ТС был более разговорчив, и хотя бы из вежливости отвечал на наводящие вопросы.

Нууу, может он юниор из Конторы и боится, чтобы не сболтнуть лишнего. smile.gif


--------------------
PM
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
FatCat  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Чеширский кот
******

Профиль
Журнал
Группа: Администратор
Почтальон группы
Сообщений: 5911
Пользователь №: 1
На форуме: 10 лет, 10 месяцев, 2 дня
Карма: 125

Не пью :
22 года, 3 месяца, 3 дня


Цитата (Valick @ 9.09.2016 - 10:18)
запрос к БД будет гораздо быстрее, чем создание подобного массива

С какой стати мы сравниваем запрос к БД с созданием массива?
Создание массива будет быстрей, чем заливка из файла в БД, а получение информации из файла будет быстрее получения информации из БД.


--------------------
Бесплатному сыру в дырки не заглядывают...
PMПисьмо на e-mail пользователюICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Valick  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 5497
Пользователь №: 35718
На форуме: 4 года, 20 дней
Карма: 167




Цитата (FatCat @ 9.09.2016 - 14:10)
заливка из файла в БД

это как раз разовая операция
дальше имеем нормальную БД и файл в 2 гб их то мы и сравниваем:
что бы извлечь информацию из БД необходимо создать запрос
что бы извлечь ту же самую информацию из файла, необходимо сначала создать массив (жалкое подобие индекса) и только потом извлечь информацию.

Я конечно понимаю, что этот "индекс", можно хранить так же в отдельном файле, хотя об этом речи пока не было, но один конфиг открывать сначала один файл считывать из него информацию в массив, потом открывать другой и выбирать нужную информацию будет не так быстро как вам того хочется. Я уж молчу про сортировку, добавление, удаление и тд. Опять же не известно сколько народу будет одновременно работать с этим файлом и что будет твориться с блокировками.

Ну и в конце концов на кой керн придумали БД, если с файлами гораздо быстрее? ("быстрее")


--------------------
wmr - R281553014107
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
FatCat  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Чеширский кот
******

Профиль
Журнал
Группа: Администратор
Почтальон группы
Сообщений: 5911
Пользователь №: 1
На форуме: 10 лет, 10 месяцев, 2 дня
Карма: 125

Не пью :
22 года, 3 месяца, 3 дня


Цитата (Valick @ 9.09.2016 - 13:28)
это как раз разовая операция

Так же, как и получение байтов вхождений слова.


Цитата (Valick @ 9.09.2016 - 13:28)
необходимо сначала создать массив (жалкое подобие индекса) и только потом извлечь информацию.

Не так. Читать из файла начиная с указанного байта.


Цитата (Valick @ 9.09.2016 - 13:28)
Я уж молчу про сортировку, добавление, удаление и тд.

Я тоже молчу, потому что этого нет в вопросе.


--------------------
Бесплатному сыру в дырки не заглядывают...
PMПисьмо на e-mail пользователюICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Valick  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 5497
Пользователь №: 35718
На форуме: 4 года, 20 дней
Карма: 167




Цитата (FatCat @ 10.09.2016 - 02:03)
Так же, как и получение байтов вхождений слова.

вот тут вы не правы
1) если это разовая операция, то результат этой операции надо где-то хранить, об этом кроме меня в топике пока никто не обмолвился и словом.
2) при добавлении удалении слов, эту процедуру надо проводить повторно (и лично от вас я бы хотел услышать алгоритм автоматизации данного процесса), я понимаю, что об этом пока речи не шло, но на то нам и дана голова что бы немножко думать о будущем.
3) если таких слов например 1000, то это 1000 индексных файлов
4) принимая во внимание пункт 3) пунк 2) становться чем-то очень страшным

Цитата (FatCat @ 10.09.2016 - 02:03)
Не так. Читать из файла начиная с указанного байта.

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


--------------------
wmr - R281553014107
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
sergeiss  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Сидел он, дум великих полон - и вдаль глядел
******

Профиль
Группа: Эксперт
Группа переписки
Сообщений: 14978
Пользователь №: 4190
На форуме: 8 лет, 10 месяцев, 3 дня
Карма: 444




Еще раз в этой теме поддержу Валика, что заявленная задача более качественно решается с помощью БД.
Да, без БД её можно тоже решить. Но полученный функционал будет подобием работы с БД, по-другому не получится. Но это всё равно будет не то же самое, что нормальная БД. Если человек ставит себе цель потренироваться в программировании, то да, можно и поупражняться. Но если это нужно для реальной работы, т.е. чтобы быстро и качественно, то нужно работать с БД. Можно ж взять SQLite, если на сервере нет ничего, кроме ПХП (о чем я в этой теме уже говорил).

И вообще. Мне очень хочется услышать ТС smile.gif А то мы тут спорим-спорим, но толку ноль пока что.


--------------------
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
PMICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
brevis  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 266
Пользователь №: 39616
На форуме: 2 года, 6 месяцев, 26 дней
Карма: 31




Заявленная задача здесь -- найти "координаты" слов. Быстрее всего это можно сделать загрузив файл в память и пробежавшись по нему. В идеале конечно нужно читать файл по кусочкам и искать на лету. Можно, кстати, в несколько потоков. Но так как объем памяти позволяет и у нас есть волшебная preg_match_all -- то лишними телодвижениями можно не напрягаться. Ну и в этом случае особо интересного в этой задаче не так уж и много.

А все что дальше -- наши фантазии. Опыт конечно подсказывает, что должно быть что-то еще. Но то уже другая задача.


--------------------
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
  Быстрый ответ
Информация о Госте
Введите Ваше имя
Кнопки кодов
Для вставки цитаты, выделите нужный текст и
НАЖМИТЕ СЮДА
Введите сообщение
Смайлики
:huh:  :o  ;) 
:P  :D  :lol: 
B)  :rolleyes:  <_< 
:)  :angry:  :( 
:unsure:  :blink:  :ph34r: 
     
Показать всё

Опции сообщения  Включить смайлики?
 Включить подпись?
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:

Опции темыСтраницы: (3) 1 [2] 3  Ответ в темуСоздание новой темыСоздание опроса