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

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

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



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 6
Пользователь №: 43355
На форуме: 6 месяцев, 19 дней
Карма:




Здравствуйте. Есть текстовой файл 2гб, задача найти слово к примеру "тундра" - в этом файле слово встречается 357раз. Нужно для каждого слова найти байты с которых оно начинается! Результат должен быть примерно таким:

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

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

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



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

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




Цитата (ВиталийОдесса @ 8.09.2016 - 21:43)
Нужно для каждого слова найти байты с которых оно начинается!

зачем?


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

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



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 6
Пользователь №: 43355
На форуме: 6 месяцев, 19 дней
Карма:




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

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



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

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 1448
Пользователь №: 28976
На форуме: 5 лет, 7 месяцев, 29 дней
Карма: 83




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

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



146%
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 2286
Пользователь №: 27172
На форуме: 5 лет, 11 месяцев, 25 дней
Карма: 75




preg_match_all с параметром PREG_OFFSET_CAPTURE не прокатит?


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

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



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

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




ВиталийОдесса, текстовый файл прям совсем текстовый или там как раз есть что-то вроде ключ - значение?

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


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

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



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 6
Пользователь №: 43355
На форуме: 6 месяцев, 19 дней
Карма:




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

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



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

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

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


Цитата (ВиталийОдесса @ 8.09.2016 - 20:43)
побайтовый перебор всего файла, но для 2 гб это очень долго!

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


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

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



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

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




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

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


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

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



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 6
Пользователь №: 43355
На форуме: 6 месяцев, 19 дней
Карма:




Цитата (Arh @ 8.09.2016 - 23:30)
preg_match_all с параметром PREG_OFFSET_CAPTURE не прокатит?

БОЛЬШОЕ СПАСИБО! это то что нужно!
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
sergeiss  
Дата
Цитировать сообщение

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



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

Профиль
Группа: Эксперт
Группа переписки
Сообщений: 15236
Пользователь №: 4190
На форуме: 9 лет, 1 месяц, 21 день
Карма: 460




Цитата (S.Chushkin @ 9.09.2016 - 00:38)
Это шутка?
А то я не въехал в юмор...

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

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

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


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

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

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

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

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



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

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




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


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

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



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 6
Пользователь №: 43355
На форуме: 6 месяцев, 19 дней
Карма:




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


Просто задача неординарная, на машине крутится только php! preg_match_all с параметром PREG_OFFSET_CAPTURE справляется на ура (благо оперативки 32гб smile.gif )
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Valick  
Дата
Цитировать сообщение

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



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

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




Цитата (ВиталийОдесса @ 9.09.2016 - 08:41)
Просто задача неординарная

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


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

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



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 6
Пользователь №: 43355
На форуме: 6 месяцев, 19 дней
Карма:




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

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

что быстрее?
1. Запрос к БД
2. Запрос к байту в файле
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  Ответ в темуСоздание новой темыСоздание опроса