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

flash.kosta

Новичок
dimagolov
принимаю к сведению.

Я пишу скрипт такого рода:
Люди водят текст не большой в форму на 1000 символов и жмут обработать. После чего скрипт должен найти все слова из словаря в тексте и показать их значение.
 

dimagolov

Новичок
держи словарь (то есть не тексты, а отдельные слова) в индексированном поле в БД, полученный текст дели на слова, скармливай их в запрос к БД (можно группами по несколько через OR, по сколько можно посмотреть экспериментально) и при нахождении слова в словаре БД, выделяй.
 

john.brown

просто кулибин
Тут, имхо, главный вопрос - надо "найти есть ли эти слова из ТЕКСТ1 в файле ФАЙЛ1", или "проверить на схожесть со словами ФАЙЛ1". До наступления ясности с этим, разговор довольно пустой.

-~{}~ 09.10.09 15:44:

dimagolov
А чего не скормить БД в WHERE slovo IN(...)?
 

dimagolov

Новичок
надо проверять по explain идентично ли это OR. по-моему были (на каких-то версиях) приколы с оптимизацией запросов с IN
 

flash.kosta

Новичок
john.brown
логику писал выше. Напишу еще раз:
дается текст. И надо найти в этом тексте все слова из словаря (большой текстовый файл) и выделить их допустим каким нибудь цветом. (это уже далеко не проблема).
 

john.brown

просто кулибин
Ну, если так, то eregi() наф не нужен. Или strpos(), если с бд не заморачиваться, или уж с бд. Что будет быстрее, затрудняюсь сказать...
 

Resha

Новичок
И на заметку - полнотекстовый поиск имеет ряд особенностей (для MySQL подтверждено): http://en.wikipedia.org/wiki/Full_text_search#Indexing

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