требуется вдохновение для кодирования - ключевые слова, содержащиеся в строке

У меня есть конкретная проблема, и мне нужно знать, как лучше всего ее решить.

У меня есть строка php, которая может содержать несколько ключевых слов (на самом деле тегов). Например:-

"поисковая реклама, адвордс, гугл"

or

"веб-разработка, построение сообщества, веб-дизайн"

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

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

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

Любые идеи?

Спасибо

Джонатан


person Jonathan Lyon    schedule 03.03.2010    source источник


Ответы (1)


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

1) Самый простой: преобразовать список в регулярное выражение вида «ключевое слово1|ключевое слово2|ключевое слово3» и посмотреть, совпадают ли входные данные.

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

3) Самый сложный: это может не сработать в зависимости от конкретной ситуации, но если весь возможный контент может быть проиндексирован поисковым решением (например, Apache SOLR), то ваш список ключевых слов может использоваться в качестве строки поиска, и вы можете возвращать результаты выше определенного уровня релевантности.

Трудно точно сказать, какое решение будет работать лучше, не зная больше об исходных данных. Большое количество ключевых слов может загромождать регулярное выражение, но если это короткий список, то это может отлично сработать. Если ваши входные данные длинные, то № 2 не будет работать так хорошо, потому что вам нужно проверять каждое входное слово. Как всегда, ваш пробег может варьироваться, поэтому я бы начал с самого простого решения, которое, по моему мнению, будет работать, и посмотрю, приемлема ли производительность.

person David Boike    schedule 03.03.2010
comment
Спасибо, Дэвид, сможет ли первый (самый простой подход) справиться с ситуацией, когда поисковая оптимизация ИЛИ adwords будут сопоставлены с пулом онлайн-маркетинга? - person Jonathan Lyon; 03.03.2010
comment
Я не понимаю, почему бы и нет. Если бы ваш пул ключевых слов для онлайн-маркетинга был SEO, adwords, adsense, вы бы создали регулярное выражение seo|adwords|adsense. Если бы вашими входными ключевыми словами были New SEO Thingamajig, это соответствовало бы регулярному выражению, как и Google AdSense. - person David Boike; 04.03.2010
comment
Привет, Дэвид, еще раз спасибо, регулярное выражение не является моей сильной стороной - не могли бы вы дать некоторое представление о том, как построить это с точки зрения синтаксиса, пожалуйста. - person Jonathan Lyon; 04.03.2010
comment
Извините, PHP не моя сильная сторона. Проверьте stackoverflow.com/questions/2368608/ - person David Boike; 04.03.2010