Поиск текста для (потенциально) десятков тысяч токенов - PullRequest
1 голос
/ 30 апреля 2009

Я поддерживаю простую внутреннюю CMS на основе php. Я хотел бы найти в тексте статей по мере их сохранения в системе десятки тысяч различных токенов, чтобы автоматически применять ссылки на эти токены, а также устанавливать связь в таблице ассоциации между статьи и сущности, которую представляет токен.

Каков наилучший способ сделать это? Есть ли более быстрый / более эффективный способ сделать это, чем получать список всех токенов и их соответствующих сущностей / идентификаторов при каждом сохранении статьи?

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

Редактировать: мне кажется, я неправильно задал вопрос.

Рассмотрим следующий текст:

Стив Макмаффин съел семнадцать сказочных пушистых фахитасов в The Stinking Bean, в то время как Джонсон Фатлупс съел тридцать два.

У меня есть два человека, которые оба находятся за столом «персона», один ресторан за столом «ресторан» и один пункт меню ресторана, который находится за столом «restaurant_menu_item».

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

Ответы [ 2 ]

1 голос
/ 30 апреля 2009

Это всегда будет сложно (в любом случае, вычислительно), если только вы не можете получить некоторую гарантию формата токена. Без разметки компьютер действительно не знает, что какая-то конкретная строка символов имеет какое-либо особое значение, если его нельзя научить распознавать формат.

«Простой» ответ - перебрать текст для каждого токена, посмотреть, есть ли он, и обработать его. Но у вас будут две проблемы: время вычислений и коллизии (как указал Чед в своем комментарии).

Существует ли очень простая разметка, которую вы можете применить? MediaWiki создает внутренние ссылки, только если фраза заключена в [[скобки]]. Многие вики-программы будут создавать ссылки, только если вы используете CamelCaseThePhrase.

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

Вы уверены, что ваша аудитория не может справиться с чем-то вроде

SteveMcMuffin ate seventeen FabulousFurryFajitas at
TheStinkingBean, while JohnsonFatlumps ate thirty-two.

или

[[Steve McMuffin]] ate seventeen [[Fabulous Furry Fajitas]] at
[[The Stinking Bean]], while [[Johnson Fatlumps]] ate thirty-two.
0 голосов
/ 30 апреля 2009

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

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