[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Интересная задачка - получить координаты слова
Страницы: 1, 2, 3
ВиталийОдесса
Здравствуйте. Есть текстовой файл 2гб, задача найти слово к примеру "тундра" - в этом файле слово встречается 357раз. Нужно для каждого слова найти байты с которых оно начинается! Результат должен быть примерно таким:

1 тундра 1144
2 тундра 44545
3 тундра 45666
4 тундра 741758
5 тундра 825527
6 тундра 5241757
....
357 тундра 19000000104

Пока есть вариант - побайтовый перебор всего файла, но для 2 гб это очень долго! Есть более оптимальные идеи?
Valick
Цитата (ВиталийОдесса @ 8.09.2016 - 21:43)
Нужно для каждого слова найти байты с которых оно начинается!
ВиталийОдесса
для последующего быстрого доступа к ключу и соседнему тексту....
Kusss
я бы загнал в базу данные по строчно. и количество байт в этой строке.
Arh
preg_match_all с параметром PREG_OFFSET_CAPTURE не прокатит?

_____________
Промокод предоставляет скидку на заказ домена и/или хостинга reg.ru
BFCC-3895-8804-9ED2
Valick
ВиталийОдесса, текстовый файл прям совсем текстовый или там как раз есть что-то вроде ключ - значение?

Kusss правильно сказал, что нужно смотреть в сторону БД, но вот как загнать эту информацию туда это уже вопрос другой. Построчно - это слишком грубо.


_____________
Стимулятор ~yoomoney - 41001303250491
ВиталийОдесса
на бд ресурсов нет! пробую с PREG_OFFSET_CAPTURE...
FatCat
Цитата (ВиталийОдесса @ 8.09.2016 - 20:43)
побайтовый перебор всего файла, но для 2 гб это очень долго!

Не многим дольше, чем простой поиск вхождений. Только алгоритм правильный составить: не от первой буквы слова начинать проверку, а от последней.

_____________
Бесплатному сыру в дырки не заглядывают...
S.Chushkin
Цитата (Valick @ 8.09.2016 - 23:40)
Kusss правильно сказал, что нужно смотреть в сторону БД...

Это шутка?
А то я не въехал в юмор...


_____________
Рекламка / ad.pesow.com Хрень / mr-1.ru
ВиталийОдесса
Цитата (Arh @ 8.09.2016 - 23:30)
preg_match_all с параметром PREG_OFFSET_CAPTURE не прокатит?

БОЛЬШОЕ СПАСИБО! это то что нужно!
sergeiss
Цитата (S.Chushkin @ 9.09.2016 - 00:38)
Это шутка?
А то я не въехал в юмор...

Почему же юмор? Валик правильно сказал. У ТС какая задача? Он сам говорит так:
Цитата (ВиталийОдесса @ 8.09.2016 - 23:09)
для последующего быстрого доступа к ключу и соседнему тексту....

то есть, это как раз задача для БД. И чтобы не "изобретать велосипед", лучше один раз положить в БД и работать с ней.

Насчет "нет ресурсов для БД"... Для SQLite тоже нет ресурсов?????


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

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

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

user posted image
Valick
S.Chushkin, у меня огромное подозрение, что ТС пытается организовать подобие базы данных (даже учитывая, что мой вопрос так и остался без ответа), поэтому нет, я не шучу.
А вот отсутствие ресурсов для БД, тут уж плакать или смеяться на выбор.


_____________
Стимулятор ~yoomoney - 41001303250491
ВиталийОдесса
Цитата (Valick @ 9.09.2016 - 09:14)
S.Chushkin, у меня огромное подозрение, что ТС пытается организовать подобие базы данных (даже учитывая, что мой вопрос так и остался без ответа), поэтому нет, я не шучу.
А вот отсутствие ресурсов для БД, тут уж плакать или смеяться на выбор.


Просто задача неординарная, на машине крутится только php! preg_match_all с параметром PREG_OFFSET_CAPTURE справляется на ура (благо оперативки 32гб smile.gif )
Valick
Цитата (ВиталийОдесса @ 9.09.2016 - 08:41)
Просто задача неординарная

У меня на этот счёт иное мнение.
Вы слышали анекдот про неуловимого Джо?
Вот примерно то же самое, только вид с боку...


_____________
Стимулятор ~yoomoney - 41001303250491
ВиталийОдесса
Цитата (Valick @ 9.09.2016 - 09:55)
Цитата (ВиталийОдесса @ 9.09.2016 - 08:41)
Просто задача неординарная

У меня на этот счёт иное мнение.
Вы слышали анекдот про неуловимого Джо?
Вот примерно то же самое, только вид с боку...

что быстрее?
1. Запрос к БД
2. Запрос к байту в файле
Быстрый ответ:

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