Сравните популярность ключевых слов в строке - PullRequest
0 голосов
/ 27 апреля 2011

Я хочу взять длинную строку (сотни тысяч символов) и сравнить ее с массивом ключевых слов, чтобы определить, какое из ключевых слов в массиве упомянуто больше, чем остальные.

Это кажется довольно простым, но я немного обеспокоен тем, что strstr не выполнится для этой задачи.

Должен ли я сделать это по-другому?

Спасибо

Ответы [ 2 ]

2 голосов
/ 27 апреля 2011

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

Создайте ассоциативный массив, где ключи - это ключевые слова, а значения - вхождения.

Читайте строку слово за словом, я имею в виду взять слово и поместить его в переменную. Затем сравните его со всеми ключевыми словами (есть несколько способов сделать это, вы можете запросить ассоциативный массив с помощью isset). Когда ключевое слово найдено, увеличьте его счетчик.

Я надеюсь, что PHP реализует ассоциативные массивы с некоторыми штуками, похожими на hashmap ...

0 голосов
/ 27 апреля 2011

Разобрать слова линейно. Для каждого слова, которое вы встречаете, увеличьте его количество в ассоциативном массиве слов, который вы ищете (конечно, пропуская те, которые вас не интересуют). Это будет намного быстрее, чем strstr.

...