Чтение большого txt файла и поиск в нем

flash.kosta

Новичок
Чтение большого txt файла и поиск в нем

Здравствуйте еще раз! Есть .txt файл размеров 7 метров пусть будет ФАЙЛ1. Там находятся слова типа "слово::значение1, значение2, ..., значениеN" и их очень много (повторюсь 7 мегабайт). Далее дается текст длинной в 1000-2000 символов, ну где то 100-200 слов, пусть будет ТЕКСТ1. Надо найти есть ли все эти слова из текста ТЕКСТ1 в большом текстовом файле ФАЙЛ1. То есть каждое слово из ТЕКСТ1 проверить на схожесть со словами ФАЙЛ1. Теперь вопросы:
Как лучше это осуществить?

1. Перегнать ФАЙЛ1 в базу данных MySQL?
2. Перегнать это все в .php файл в виде массива большого.
3. Оставить .txt файлом как есть.

И еще один вопрос: каждый раз придется делать поиск функцией eregi.
Какова будет нагрузка на сервер?
 

Alexandre

PHPПенсионер
на сколько я понял - надо узнать есть ли слова из словаря в тексте длинной в 100 - 200 слов

1) строим массив в 100 слов
2 открываем словарь 7М и делаем цикл
вводим строчку и проверяем вхождение всех слов из строчки словаря или одного в данном массиве
3) переход к сл строчке.

если текстов много - можнт быть бд как выход
 

flash.kosta

Новичок
Alexandre
да, Вы совершенно верно поняли. То есть функцией поиска, например то же ereg искать сразу в целом словаре? Я раньше делал по другому. Делал массив из слов и массив из словаря, а потом к каждому слову перебирал весь массив словаря.
Апокалипсис
текст из 1500 символов отрабатывает за 58-59 секунд.
 

Фанат

oncle terrible
Команда форума
при том, что он у тебя работает очень долго, а должен в сто раз быстрее
 

flash.kosta

Новичок
А все же какой функцией лучше читать весь этот словарь и искать в нем слова из текста? Какой алгоритм будет менее ресурсо/время емкий?
 

HEm

Сетевой бобер
flash.kosta
раздел String Functions в мануале в любом языке штудируется в первую очередь, я думаю
 

flash.kosta

Новичок
Значит перегнать этот весь словарь в базу данных и запросами искать? Я правильно понял?
 

Фанат

oncle terrible
Команда форума
а для чего вообще это делается?
может быть, есть совсем другие пути, кроме как тупо искать слова из одного текста в другом?
 

craz

Нестандартное звание
in_array(слово, словарь) может быть если есть массив словаря? как вариант? или не вариант?
P.s. Не знаю его скоростных характеристик(сильно не пинать, + не большой мастер считать шаги алгоритмов). но во всяком случае это на вскидку O(n) операций если не считать алгоритма in_array, ereg же не считаем, но там идем одним массивом по другому линейно на вскидку кажется больше операций.
 

flash.kosta

Новичок
можно перевести весь словарь в массив. Но опять же спросим у специалистов! Насколько это ресурсоемко?

-~{}~ 09.10.09 14:36:

еще вдагоночку вопросик. Можно ли использовать в качестве ключа массива русские символы?
 

dimagolov

Новичок
flash.kosta, начни читать то, что тебе пишут.
во-первых, ссылку на описание того, как полнотекстовый поиск работает в том же мускле.
во-вторых, если тебе задают вопросы (e.g. а что собственно за задача, чтобы разобраться нужен ли тебе вообще поиск), то будь добр на них отвечать.

про ресурсоемко. в твоих силах проверить это самостоятельно, но модифицировать пхп файл с массивом будет отдельной проблемой, даже если скорость устроит.
 
Сверху