Что чувствует мужчина search php add keywords. Сервисы для поиска ключевых слов

Часто, проводя время на форумах и в сообществах Веб-мастеров и оптимизаторов, замечаю, как многие задают одни и те же вопросы, начинают спорить на тему – а надо ли заполнять meta теги, в частности keywords? Очень трудно ответить собеседнику в двух словах на этот вопрос, поэтому постараюсь объяснить все «на пальцах», в новой теме.

Нужно ли заполнять keywords

Скажу сразу, что keywords можете заполнять, а можете оставить пустым . В обоих случаях разницы вы не увидите - далее объясню почему. И нет смысла анализировать ТОП-10, логики здесь никакой нет и что-то доказать у вас не получится.

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

Хорошо, давайте посмотрим, почему не обязательно заполнять meta-тег keywords? Еще в далеком прошлом, когда поисковые алгоритмы были более простыми, нежели сейчас - оптимизаторы заполняли данный тег с целью помочь поисковым системам понять, что находиться на странице или о чем идет речь в тексте.

Вскоре, Веб-мастера стали злоупотреблять использованием ключевых слов в данном meta-теге. И со временем, значимость keywords понизили. Сегодня, в достаточном количестве, появились новые факторы ранжирования, более качественные .

Да, в документации Яндекса для Веб-мастера , вы прочитаете, что keywords поможет ПС лучше понять содержимое страницы. Но заполнение, не даст вам преимущества перед конкурентами. Так как полезность контента от этого не меняется и «весомым и значимым» тегом keywords считаться не может .

Как я уже говорил, работа над сайтом, это ряд действий, которые работают в комплексе. Заполнение тега keywords может стать лишь «маленьким плюсом» в общей работе большой системы.

Частые ошибки использования keywords

И если вы все же решили использовать meta-теги, давайте делать это правильно. Рассмотрим основные ошибки, которые допускают оптимизаторы или Веб-мастера (исполнители). Все варианты, реальные примеры, которые попадались мне при работе с сайтами клиентов.

1. Повторение ключевых слов на всех страницах

При таком раскладе, исполнитель подбирает «общие» ключевые слова, которые описывают тематику всего сайта и вставляет на все страницы.

Правило №1: каждая страница вашего ресурса уникальна поэтому keywords должен быть так же уникальным.

2. Спам ключей на одной странице

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

Правило №2: большое число ключевых слов в keywords, может привести только к санкциям от поисковых систем, но никак не сделает ваш сайт лучше. Достаточно использовать 2-3 ключевика.

3. Знаки препинания

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

Правило №3: ключевое слово, это не обязательно одно слово, чаще это фраза из нескольких слов, которая разделяется запятой.

4. Ключи общего характера

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

Правило №4: дайте ключевым словам больше конкретики, используя фразы.

5. Использование keywords на служебных страницах

Исполнитель использует ключевые слова, на таких страницах, как:

  • контакты;
  • обратная связь;
  • о себе;
  • галерея;
  • и ряд других страниц, у которых нет цели привлечь посетителя.

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

6. Целевое действие на странице

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

Правило №6: на определенной странице вашего сайта, человек совершает действие: что-то узнает, скачивает, покупает, заказывает, смотрит (фото и видео) и так далее. Используйте ключевые слова по назначению и действию, которое должен совершить пользователь.

7. Ключевые слова с использованием региона

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

Правило №7: нет необходимости указывать регион в keywords, для этого поисковые системы берут данные из других источников, например, Яндекс.Справочник.

Как правильно заполнять

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

Подводя итог, если вы сомневаетесь и не знаете, как правильно заполнить keywords, лучше оставьте данный meta-тег пустым.

На сегодняшний день, я продолжаю заполнять этот тег. Использую 2-3 ключевика, копируя их с помощью Яндекс.Вордстат – статистика ключевых слов.

Если есть что добавить, или у вас свое мнение по данной теме, давайте обсудим в комментариях.

Создавая новый php движок для своего сайта bodybilding.info , я, как и всегда не захотел выполнять нудную работу сам и поэтому такое ответственное задание как подбор ключевых слов к каждой странице сайта доверил php скрипту , который написал меньше чем за полчаса. Кстати, я уже писал раньше, но там все было реализовано совсем не так как здесь.
Конечно, многие могут возразить, что поисковики не учитывают мета теги keywords и description , и незачем голову морочить проблемой подбора ключевых слов, но учитывают или нет, это известно только администрации поисковых машин. В частности, я недавно проводил эксперимент, в котором участвовало три пары сайтов, на каждой паре сайтов был один и тот же контент, но на одном из сайтов каждой пары были прописаны keywords и description . И что вы думаете, через месяц, все три сайта с keywords и description были выше в выдаче Яндекса, чем их клоны без этих мета тегов. (Примечание: сайты были оптимизированы под абсолютно не конкурентные запросы и не имели бэклинков).

Принцип работы php скрипта , основной задачей которого является “на лету” подбирать к тексту ключевые слова (keywords) , заключается в разбиении всего текста на слова и занесение их в массив. Из исходного текста сначала удаляются все знаки препинания, затем слова заносятся в массив и каждому слову присваивается число его повторений в тексте. После заполнения массива слова сортируются по количеству повторений, и в качестве результатов берется верхушка массива – 15-25 самых часто употребляемых слов.

А вот и исходный код этого php скрипта для подбора ключевых слов :

Пользоваться данным php классом очень просто, создаете экземпляр класса функцией new а потом вызываете внутреннюю функцию get_keywords() , класса Counter . Вот пример использования этого класса:
$word_counter = new Counter();
if (strlen($content)>50000 )
{
$keywords = $word_counter->get_keywords(substr($content, 0 , 50000 ));
}
else
{
$keywords = $word_counter->get_keywords($content);
}
В переменной $ content должен содержатся основной текст страницы, для которой создаются ключевые слова . И еще, полученная строка содержит только ключевые слова , без мета тегов. Скачать данный php класс для подбора ключевых слов в zip архиве вы можете здесь.

I have title (varchar), description (text), keywords (varchar) fields in my mysql table.

I kept keywords field as I thought I would be searching in this field only. But I now require to search among all three fields. so for keywords "word1 word2 word3", my query becomes

SELECT * FROM myTable WHERE (name LIKE "%word1%" OR description LIKE "%word1%" OR keywords LIKE "%word1%" OR name LIKE "%word2%" OR description LIKE "%word2%" OR keywords LIKE "%word2%" OR name LIKE "%word3%" OR description LIKE "%word3%" OR keywords LIKE "%word3%") AND status = "live"

Looks a bit messy but this works. But now I need to implement synonym search. so for a given word assuming there are a few synonyms available this query becomes more messy as I loop through all of the words. As the requirements are getting clearer, I will need to join this myTable to some other tables as well.

    Do you think the above way is messy and will cause problems as the data grow?

    How can I avoid above mess? Is there any cleaner solution I can go by? Any example will help me.

  • Is there any other method/technique you can recommend to me?
EDIT

@Peter Stuifzand suggested me that I could create one search_index table and store all 3 fields (title,keyword,desc) info on that and do full text search. I understand that additionally this table will include reference to myTable primary key as well.

But my advanced search may include joining mytable with Category table, geographic_location table (for searching within 10, 20 miles etc), filtering by someother criteria and of course, sorting of search results. Do you think using mysql fulltext will not slow it down?

Sphinxsearch является поисковым движком для быстрого fulltextsearch, может получать данные из mysql, oracle и mssql, может выступать сам хранилищем(realtime индексы). Также sphinx имеет режим работы через api и через sphinxql - аналог протокола sql(с некоторыми ограничениями), что позволяет подключить поиск через sphinx на сайте с минимальным изменением кода. Это один из немногих великих, крупных и открытых проектов разработанный в России. На моей жизни я видел как sphinx обрабатывает порядка 100-200 поисковых запросов на 2 миллиона записей из mysql и при этом сервер свободно дышал и его не тошнило, mysql начинает умирать уже на 10 запросах в секунду на аналогичном конфиге.

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

Sphinx содержит две независимые программы indexer и searchd. Первый строит индексы по данным взятым из базы данных, второй производит поиск по построенном индексу. А теперь перейдем к настройкам поиска в sphinx.

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

Пример нормализации слова стеммингом на русском.
Слова “яблоко”, “яблока”, “яблоку” будут обрезаны в “яблок” и любой поисковый запрос с вариацией слова “яблока” будет тоже нормализован и найдет записи со словами которые были описаны выше.

Для английского слова “dogs” и “dog” будут нормализованы к “dog”.
К примеру в sphinx должен положить в индекс слово кучерявый, в индекс попадет слово кучеряв и будут находиться вариации кучеряво, кучерявая и др.
Включить стемминг можно для русского, английского или обоих языков

Morphology = stem_en
morphology = stem_ru
morphology = stem_enru

Также можно использовать опции Soundex и Metaphone они позволяют использовать для английского языка с учетом звучания слов. Не использую в работе данные алгоритмы морфологии так что если кто то знает много про них буду рад почитать. Для русского языка такие алгоритмы позволяли бы получать из слов “солнце” и “сонце” нормализованную форму “солнце”, которая получается на основании звучания и произношения этих слов.

Morphology = stem_enru, Soundex, Metaphone

Можно подключать и внешние движки для морфологии или написать свой.

Wordforms Позволяет подключать свои словари словоформ, хорошо применяется на специализированных тематических сайтах, имеет хороший пример в документации.

Core 2 duo > c2d
e6600 > c2d
core 2duo > c2d

Позволит найти статью о core 2 duo для любого поискового запроса от модели до вариаций названия.

Конопля > травка
дурь > травка
моя прелесть > травка
трава свободы > травка
че покурить > травка
есть чё > травка

А данный словарь позволит вашим пользователя легко найти информацию о травке на сайте.

Для словоформ используются файлы в формате ispell или MySpell(которые можно сделать в Open Office)

Wordforms = /usr/local/sphinx/data/wordforms.txt

enable_star Позволяет использовать звездочки в запросах, к примеру по запросу *пр* будут найдены проспект, привет, апроксимация и др.

Enable_star = 1

expand_keywords Автоматически расширяет поисковый запрос до трех запросов

Running -> (running | *running* | =running)

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

Expand_keywords = 1

index_exact_words Позволяет на ряду с морфологически нормализованной формой хранить и оригинальное слово в индексе. Это сильно увеличивает размер индекса, но с учетом предыдущей опции позволяет выдавать результаты более релевантно.

К примеру есть три слова “дыня”, “дыне”, “дыню” без этой опции все три слова будут сохранены в индексе как дын и на запрос “дыне” будут выданы в порядке добавления в индекс то есть “дыня”, “дыне”, “дыню”.
Если же включить опции expand_keywords и index_exact_words то на запрос “дыне” будет более релевантная выдача “дыне”, “дыня”, “дыню”.

Index_exact_words = 1

min_infix_len Позволяет индексировать части слова инфиксы, и искать по ним с применением *, вроде search*, *search и *search*.
К примеру при min_infix_len = 2 и попаданию в индекс слова “тест”, будут сохранены в индекс “те”, “ес”, “ст”, “тес”, “ест”, “тест” и по запросу “ес” будет найдено это слово.

Обычно я использую

Min_infix_len = 3

Меньшее значение генерит слишком много мусора и помните что использование этой опции сильно увеличивает индекс.

min_prefix_len Является дочерним для min_infix_len и делает почти тоже самое только сохраняет начало слов или префиксы.
К примеру при min_infix_len = 2 и попаданию в индекс слова “тест”, будут сохранены в индекс “те”, “тес”, “тест” и по запросу “ес” будет найдено это слово.
min_prefix_len = 3min_word_len

Минимальный размер слова для индексации, по умолчанию 1 и индексирует все слова.
Обычно использую
min_word_len = 3
Слова меньшего размера обычно не несут смысловой нагрузки.

html_strip Вырезает все html теги и html комментарии. Эта опция актуально если вы строите свой google/yandex на базе sphinxsearch. Запустили спайдера спарсили сайт, загнали его в базу данных, натравили indexer и эта опция позволит избавиться от хлама в виде html тегов и искать только по контенту сайта.

Сам к сожалению не использовал, но в документации написано что может косячить со всякими xml и не стандартным html(к примеру где попало открывающимся и закрывающимся тегам и пр).

Буду рад любым вопросам и уточнениям.
Офсайт

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

Давайте предположим, что на нашем сайте имеется множество различных материалов (статей, новостей, заметок и прочего). Всё это добро находится в базе данных. И наша задача - реализовать поиск на сайте . Простейший алгоритм следующий:

  • Создать HTML-форму со строкой поиска, а также кнопкой "Submit ". В текстовое поле пользователи будут вводить поисковый запрос, а далее нажимать на кнопку.
  • Получить поисковый запрос (как правило, передаваемый методом GET , но иногда применяют и POST ), а также, в целях защиты от XSS , пропустить его через функцию htmlspecialchars() .
  • Сделать выборку из соответствующих таблицы (со статьями, новостями, заметками и прочим) тех записей, в которых содержится поисковый запрос. Показываю примерный SQL-запрос для таких случаев: SELECT * FROM articles WHERE `text_article` LIKE %search% Соответственно, вместо search подставляется строка поиска.
  • Получив записи, в нужном виде выводим их, желательно, по релевантности. Я, например, сделал у себя на сайте так: где больше всего совпадений - та статья и релевантнее, следовательно, ставлю её первой. Скорее всего, Вам этот способ оценки релевантности тоже подойдёт.
  • Многие из Вас скажут, что ничего сложного здесь нет. И будут отчасти правы, однако, давайте разберём такой пример строки поиска: "ищу этот текст ". Встаёт вопрос: "А что, собственно, ищется? ". То ли ищется точное вхождение текста "ищу этот текст ". Или, быть может, ищется текст, где присутствуют все три слова, но которые могут следовать далеко не друг за другом. Или, возможно, ищется текст, где присутствует хотя бы одно из этих слов.

    И вот здесь задача значительно усложняется. Можно сделать сложную систему синтаксиса (как в поисковых системах), например, ищется точное вхождение, если запрос задан в кавычках. А можно давать выбор пользователям, как именно они хотят проводить поиск (с помощью radio-кнопок). Таким образом, сделано у меня на сайте. Поэтому в предыдущий алгоритм добавляется ещё один пункт: составление SQL-запрос . Вот пример SQL-запроса, когда нужно вытащить все материалы, в которых имеется хотя бы одно слово из запроса "ищу этот текст ":

    SELECT * FROM articles WHERE (`text_article` LIKE "%ищу%" OR `text_article` LIKE "%этот%" OR `text_article` LIKE "%текст%")

    Соответственно, в скрипте поиска Вы должны генерировать подобные SQL-запросы , посылать к базе данных, получать ответ и выводить его. Это всё ещё больше усложняется, если Вы выводите записи по релевантности, так как трудно сразу сказать, что должно быть релевантнее: 3 точных вхождения запроса, либо 10 вхождений частей запроса. У меня на сайте предпочтение всегда отдаётся точным вхожденияи, но этот момент уже достаточно спорен. Безусловно, это сложно, и если это Вы делаете в первый раз, то несколько часов Вы точно потратите. Надеюсь, что мой алгоритм реализации поиска на сайте через PHP Вам поможет.

    Вверх