[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Интересная задачка - получить координаты слова
Страницы: 1, 2, 3
Valick
ВиталийОдесса, а БД по вашему это что? Там те же файлы smile.gif
У меня нет ни времени ни желания вас уговаривать.

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


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

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

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

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

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

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

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


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

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

_____________
Рекламка / ad.pesow.com Хрень / mr-1.ru
Valick
FatCat, а я вам говорю, что запрос к БД будет гораздо быстрее, чем создание подобного массива, а затем обращение к байтам файла. Давайте сравнивать "по понятиям" smile.gif


_____________
Стимулятор ~yoomoney - 41001303250491
Valick
Цитата (S.Chushkin @ 9.09.2016 - 11:10)
Хм, не думаю что автору нужна БД.

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

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

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

_____________
Рекламка / ad.pesow.com Хрень / mr-1.ru
FatCat
Цитата (Valick @ 9.09.2016 - 10:18)
запрос к БД будет гораздо быстрее, чем создание подобного массива

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

_____________
Бесплатному сыру в дырки не заглядывают...
Valick
Цитата (FatCat @ 9.09.2016 - 14:10)
заливка из файла в БД

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

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

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


_____________
Стимулятор ~yoomoney - 41001303250491
FatCat
Цитата (Valick @ 9.09.2016 - 13:28)
это как раз разовая операция

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


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

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


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

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

_____________
Бесплатному сыру в дырки не заглядывают...
Valick
Цитата (FatCat @ 10.09.2016 - 02:03)
Так же, как и получение байтов вхождений слова.

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

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

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

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

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

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

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

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

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

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

_____________
Чатик в телеге
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.