Эффективность кода для анализа текста - PullRequest
0 голосов
/ 25 июля 2011

Мне нужен совет относительно анализа текста. Программа написана на php.

Мой код должен получить URL и сопоставить слова сайта с БД и найти совпадение.

Сложность в том, что слова не всегда записываются в БД, как они появляются в тексте.

пример:

Допустим, моя БД имеет следующие значения: Слово = буквы

А на сайте есть: Объемная вещь

Я должен вывести: Буквы вещь

Мой код создает несколько регулярных выражений после того, как каждый пытается сопоставить искомое слово с БД.

Для каждого слова, которое не найдено, я делаю 8 запросов к БД. У большинства слов нет совпадения, поэтому, когда мы говорим о целом веб-сайте, содержащем сотни слов, мой уровень ЦП резко возрастает.

Я думал о сохранении каждого слова, не найденного в глобализации БД, по мере их появления (HD стоит меньше, чем ЦП) или, возможно, о создании массива или словаря для хранения всего этого.

Я действительно запутался в этом проекте. Предполагается, что он будет обслуживать много пользователей, с текущим кодом сервер умрет после 10-20 запросов пользователей.

Есть мысли?

Edit: Найденные слова не являются английскими словами, и код запускается на сервере Windows 2008

Ответы [ 4 ]

1 голос
/ 26 июля 2011

Реализовать три и вычислить расстояние Левенштейна? Смотрите этот блог для подробного ознакомления с реализацией: http://stevehanov.ca/blog/index.php?id=114

0 голосов
/ 27 июля 2011

Спасибо всем за ваши ответы.К сожалению, ни один из ответов не помог мне, возможно, я не был достаточно ясен.

Я решил проблему, создав хеш-таблицу со всеми словами в БД (около 6000 слов) и проверив соответствиехеш вместо БД.

Код запускался с 4-х секундным временем выполнения и теперь 0,5 с!: -)

Еще раз спасибо

0 голосов
/ 25 июля 2011

Возможно глупый вопрос, но рассматривали ли вы вопрос об использовании предложения LIKE в своем запросе SQL? Примерно так:

$sql = "SELECT * FROM `your_table` WHERE `your_field` LIKE 'your_search'":

Обычно я обнаруживаю, что когда мне приходится слишком много манипулировать строками с возвращаемыми значениями из запроса, это легче сделать на стороне SQL.

0 голосов
/ 25 июля 2011

мне кажется работой для сфинкса & stemming .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...