Оптимизайка

Оптимизайка
Рейтинг
396
Регистрация
11.03.2012
Интересы
Программирование, информационные технологии, наука
Chukcha:
Да-да, а туда можно засунуть все что угодно, вплоть до поиска синонимов.

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

Она не нужна :) Это просто пример, который я накидал на скорую руку для демонстрации работы алгоритма.

---------- Добавлено 11.01.2013 в 16:47 ----------

izbushka:
Спасибо за идею.
А если усложнить задачу и учитывать морфологию: возьмем простой вариант - окончания (последние две буквы)
Тоже перебирать текст по словам и искать регекспом вхождение в массив ключей?
Да, также. Просто вместо сравнения слова из текста и ключевого слова будет не in_array (посимвольное сравнение), а более сложная функция сравнения, учитывающая морфологию.
systemiv:
Я Вас понял. Примерная логика должна быть такой:
1. Берем массив словосочетаний, и перебираем его в цикле.
2. В цикле отдельное словосочетание разбиваем регуляркой на отдельные слова, и пробуем найти вхождения разных вариантов расположения этих слов в тексте через функцию substr_count(). При положительном результате, делаем str_replace() этого словосочетания в тексте на <b>словосочетание</b>

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

Вот так:


<?php

$tags = array('разные', 'ключевые', 'слова');
$source = 'Это текст содержащий ключевые слова разные а также слова ключевые и разные слова';

$found = 0;
$buf = null;
foreach(explode(' ', $source) as $token) {
if (in_array($token, $tags)) {
$found++;
$buf .= $token . ' ';
} else {
if ($buf) {
echo '<b>' . trim($buf) . '</b> ';
}
$found = 0;
$buf = null;
echo $token . ' ';
}
}
if ($buf) {
echo '<b>' . trim($buf) . '</b>';
}

?>

Результат выполнения:

Это текст содержащий <b>ключевые слова разные</b> а также <b>слова ключевые</b> и <b>разные слова</b>

/* должно идти после css reset */

#content {

font-family: inherit;

padding: inherit;

margin: inherit;

}

в таком случае эти значения унаследуются из родительского элемента - вам это нужно?

Какая БД-то? MySQL?

А в HTTP_REFERER как раз лежит поисковый запрос ;)

Страница, с которой перешли на ваш сайт помещается в переменную окружения HTTP_REFERER вашим веб-сервером, поэтому на PHP это будет приблизительно так:

if (

strpos($_SERVER['HTTP_REFERER'], '//yandex.ru') !== false ||

strpos($_SERVER['HTTP_REFERER'], '//google.com') !== false

) {

echo "рекламный код";

}

nihilius:
Сам тоже думал, что мешает фрилансеру увидев хорошую идею, реализовать её самостоятельно.

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

DiAksID:
не путайте идею с "хотелками", на миллион хотелок может и найдётся пара мыслей, тянущих на "идею", но их надо ещё найти и не забыть по дороге.

Я не путаю. Мысли не тянут на идею. Бизнес-идея это как минимум просчитанный бизнес-план на несколько лет в подтверждение возможностей осуществить задуманное.

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

Почему-же гуглоидам. До Facebook вполне успешно существовали уже социальные сети, тот-же MySpace. Такой "выстрел" проекта facebook - это в большей степени случайность. В поисках таких случайностей сейчас посевные инвесторы дают денег всем подряд :D

---------- Добавлено 08.01.2013 в 17:09 ----------

nihilius:
Ну, идея все-таки стоит, ИМХО
Вот вам список бесплатных идей: http://cofounder.ru/ideas Могу также предложить свои. Купите? 😂
Иначе не существовало бы ни стартапов, ни бизнес-ангелов и т.п.

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

А Вы могли бы дать пару ссылок на ваши творения в области программирования на android и ПХП?

Отправил в личку, если так интересно.

Идея без реализации ничего не стоит. У всех полно идей, но нет то времени, то денег, то специалистов для их воплощения. Составляйте техническое задание, выкладывайте его и можно будет оценить, сколько по времени это получится. Затем умножите время на ставку в час и количество задействованных специалистов и получите стоимость.

P.S. Если это не игра то могу посмотреть ваше ТЗ (в личку), умею разрабатывать android приложения и серверную часть тоже.

В базах данных нет понятия "следующий" и "предыдущий" элемент. Они оперируют понятием множеств. Вы хотите расширить множество выбираемых элементов, следовательно нужно расширить условие.

Допустим, если в таблице portfolio есть столбец id, который содержит порядковый номер строки, тогда можно ориентироваться на него, чтобы получить нужный вам результат. Для этого нужно выбрать множество элементов по seourl который вам нужен и соединить его с множеством элементов по id, которые будут обеспечивать второе необходимое вам условие ("следующую или предыдущую"), что в переводе на язык SQL будет выглядеть как то так:

select p.*, p1.*, p2.* from portfolio p

left join portfolio p1 on (p1.id = p.id - 1)

left join portfolio p2 on (p2.id = p.id + 1)

where p.seourl='$myurl'

В таком случае, если id идут по порядку, без пропусков, вы получите искомые данные в одной строке. Если же id идут не по порядку, то вам придётся выполнить три отдельных запроса:

SELECT * FROM portfolio WHERE seourl='$myurl'

потом

SELECT * FROM portfolio WHERE id < $id order by id desc limit 0,1

и

SELECT * FROM portfolio WHERE id > $id order by id asc limit 0,1

где $id - это полученный идентификатор строки из первого вашего запроса.

P.S. Нельзя в запрос подставлять переменные php, как вы делаете. Это потенциальная уязвимость SQL injection.

Всего: 4372