эффективный способ заменить несколько слов в тексте

Используя JavaScript я должен эффективно удалить ~10000 ключевых слов из ~100000 документов слова, которых ~1000 будут ключевые слова. Какой подход Вы предложили бы?

Значительное регулярное выражение было бы практично? Или я должен просто выполнить итерации через символы документа, ища (скучные) ключевые слова?

Править:
Положительная сторона - только целые слова, не части. И некоторые ключевые слова содержат пробелы.
Я пытаюсь сделать все это сторона клиента для снижения давления на бэкенде.

11
задан hoju 3 February 2010 в 13:53
поделиться

3 ответа

Я не использовал таблицы jQuery, но я предполагаю, что если задать «width: 80%;» и определить ширину для «td», текстовое поле должно наследовать свои размеры от своего родителя («td»).

Если это не сработает или вам нужен другой подход, вы можете попробовать:

td > input[type="text"] {width: 5em;} /* or whatever */
-121--3448200-

С использованием по крайней мере ZF и Symfony для приложений уровня предприятия, скорее всего, они будут работать с HipHop. Если не сейчас, то рано или поздно. Однако вопрос заключается не столько в том, могут ли они работать с этими рамками, сколько в том, как выглядит ваша поддерживающая ИТ-архитектура.

HipHop предназначен для масштабирования больших многосерверных сайтов с высоким трафиком, таких как Facebook. В вашем обычном веб- приложении вы, скорее всего, не получите преимущества от этого. Просто продолжайте использовать memcache и APC.

См. следующие статьи:

-121--3095686-

Использование регулярного выражения может быть хорошим вариантом:

var words = ['bon', 'mad'];
'joe bon joe mad'.replace(new RegExp('(' + words.join('|') + ')', 'g'), '');
// 'joe  joe  '

regex 1 не очень сложен с такими вещами, как взгляд вперед, и механизм regexp написан на C/C + +, так что вы можете Тем не менее, проведите тестирование и проверьте, соответствует ли производительность вашим потребностям.

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

Отправка документа на сервер звучит не очень хорошо для меня. С помощью 100 000 слов вы смотрите на полезную нагрузку в диапазоне мегабайт, и вам все равно придется что-то сделать с ней на сервере и оттолкнуть ее назад.


1 Возможно, вам придется настроить regexp, чтобы сделать что-то с местами.

6
ответ дан 3 December 2019 в 11:20
поделиться

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

0
ответ дан 3 December 2019 в 11:20
поделиться

Конечный автомат, кажется, часто используется для аналогичных задач, например http://www.codeproject.com/KB/string/civstringset.aspx

0
ответ дан 3 December 2019 в 11:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: