edogs software

edogs software
Рейтинг
775
Регистрация
15.12.2005
Должность
Программирование
Dram:
edogs, SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ''+'Свитер'' in boolean mode) ORDER BY price DESC LIMIT 25' at line 1

А что у Вас функция db->quote делает? Добавляет кавычки вокруг кроме всего прочего?

В общем запрос должен получится вида match (name) against ('+Свитер +шерсть' in boolean mode)

Проще всего вероятно так

В цикле $sql[] = "+".$name.""

а дальше не AND ( match(name) against '".implode(' ', $sql)."' in boolean mode) ORDER BY

А нечто вроде AND ( match(name) against ( ".$this->_db->quote(implode(' ', $sql))." in boolean mode) ) ORDER BY

---------- Добавлено 26.09.2017 в 18:29 ----------

Chukcha:
Как то вы пугаете :(
уже ответили.....
Через час? Да вроде не так что бы скорость:)

function getSearch($names)
{
$sql = array();

if(!empty($names))
{
foreach($names as $name)
{
$sql[] = "+".$this->_db->quote($name)."";
}
}

if(!empty($sql))
{
$this->_db->setQuery("SELECT id, name, description, price, url, picture AS image FROM #__price2 WHERE price > 1
AND ( match(name) against '".implode(' ', $sql)."' in boolean mode) ORDER BY price DESC LIMIT 25");
return $this->_db->loadObjectList();
}
}

Примерно так.

Почему boolean mode ? Потому что Вам нужен точный поиск видимо, а не что там мускулу в голову взбредет.

Так же неплохо бы в my.cnf проставить

ft_stopword_file = ""

ft_min_word_len = 1

Первое что бы искало по любым словам, без исключений в виде стопслов.

Второе что бы длина слов была от 1 символа (по умолчанию 3, но если иногда ищите по "и" то придется ставить 1).

Кроме того, учтите, что фултекст ищет слова.

Лайком Вы "мойсвитер" по слову "свитер" найдете и "свитера" тоже, а фултекстом уже нет.

Однако можно найти "свитера" по слову "свитер" если запрос составлять не как +свитер, а как +свитер*, но "мойсвитер" не найдете все равно.

$sql[] = "+".$this->_db->quote($name)."*";

Кроме того если в таблица в innodb, то о +слово* забудьте, это innodb не умеет, умеет myisam. Фултекст в иннодб хоть и впилили наконец-то, но он там еще не дотягивает.

p.s.: Можете посмотреть на sphinx. Как фултекст поиск он во многих вещах лучше мускула, однако жрет память дай боже и в булевом поиске особых преимуществ не имеет.

Had:
Почему в 95 году не нашёлся умный человек и не сказал мне "сынок, зачем тебе этот ВУЗ, сними хату в МСК, подключи инет и учи SEO" зато куча умных типа людей, которые себя считали умными говорили, да, молодец иди на юриста, там мёдом намазано.

Хорошие юристы в среднем по палате получают куда больше чем хорошие сеошники.

При этом не имеют рисков типа "а вот завтра законодательство сменило алгоритм и внезапно все старые знания стали бесполезными".

И это большой вопрос стали бы Вы хорошим сеошником если бы не учились на юриста, это не работает так уж прямолинейно:)

p.s.: Учились в универе по профилю... по сути потерянное время. Когда на 2 курсе начали за бабло писать дипломы для 5 курса - в голову закралась мысль о том, что обучение как-то не особо эффективно построено.

Тинькова посмотрите.

Упрощенно говоря до 400к вывода в месяц бесплатно, дальше по 1.5% и это на самом простом тарифе.

Евген:
не все так очевидно. например отмена АСВ может повлечь отзыв вкладов и из "хороших" банков. того же сбера. а это уже может совсем негативно сказаться.

Не думаем, в понастоящему хороших навалом "превышенцев", которые (скорее всего) и составляют основную массу, а для них есть АСВ или нет - не принципиально. А если еще посчитать деньги юриков, которые не страхуются вообще и которых в хороших банках навалом, то можно сделать вывод что отмена АСВ хорошие банки заденет минимально.

Евген:
но АСВ можно как то ограничивать - например не более 2-3 банков на физлицо, не более 1-2 страховых выплат в год и тд.

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

Евген:
также банки которые дают большие проценты- пусть платят в АСВ больше, причем непропорционально больше. и тд.

Это уже реализовано, тому кто платит выше чего-то там вкладчикам - взносы увеличены конкретно. Ибо не фиг население баловать хорошим доходом, ага.

SiriuS:
Как долго за наш общий счёт будут поддерживать откровенных мошенников?

Пока АСВ не отменят.

Ведь банки крадут только то, что им несут. Если при средних ставках депозита в 2-4% в баксах или 10-12% в рублях появляется банк, который по хитрой (или не очень) предлагает 6-8% в баксах или 18-20% в рублях, а люди туда несут деньги, то кто поддерживает этих откровенных мошенников занося им деньги? Нельзя украсть то, чего не принесли.

Сама по себе идея о страховании это в какой-то мере это поддержка мошенников, т.к. честный банк работающий на свои в помощи страховых нуждаться никогда не будет. Ну че, отменяем АСВ? Или подождем пока у Вас вклад в сомнительном банке под конские проценты долежит?:)

ВладимирЯ:
- рубли, по баксам - 0.5%

Это уж Вы через чур.

В контексте этого топика следует скорее сказать о 5-5.9% в рублях и соответственно о 0.95-1.5% в долларах.

rtyug:
если экономика будет падать, то цена на хату будет расти?
Умом Россию не понять © 😂

Такое явление не только в россии случается.

В условиях падающей экономики средний класс (потенциальная ЦА покупателей недвиги для себя) беднеет и им не по карману покупать квартиру. Это выдавливает их на рынок аренды квартир (т.к. жить где-то надо).

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

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

revered:
Спасибо за ответ.
1. Элементы идут не подряд.
2. Выбирается максимум 5-10% строк. В большинстве случаев не более 1%. (таблица 9 000 000 строк)
3. Да, знаю. Здесь так написал, чтобы сократить.

По большому счету это никак не сократить.

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

Если значения идут так или иначе подряд, то иногда помогает alter table order by field - что бы подряд стоящие значения были рядом и могли выбираться за "один проход" (это актуально даже в случае ссд, хотя и менее чем с хдд).

Еще момент - посмотрите не выбираете ли Вы случаем text/blob/varchar поля, за ними мускулу приходится лезть в "отдельное место" каждый раз, т.е. если выбирается 1 строка, а в ней 4 текстовых поля - это по сути требуют 1+4=5 обращений к диску.

При этом не забывайте, что если в таблице есть хоть одно поле с переменной длиной (varchar, text, blob), то даже поля с фиксированной длиной тоже будут хранится как поля с переменной.

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

Именно потому что не благоприятная - потому и изменилась.

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

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

---------- Добавлено 20.09.2017 в 16:39 ----------

kxk:
Алексей Фоменко, Соглашусь, но тот же Кворк стал прогибаться от своей изначальной цели "буквально всё за 500 рублей"
Да там изначально этой цели не было:) Чисто рекламная замануха.

Мы когда еще эта тема начиналась, заходили. Типичный кворк "дизайн за 500р", в котором 500р только за "открою фотошоп", а дальше идет всё допами "открыть слой", "нарисовать кружок", "согласовать макет". В результате выходит в 2-3 раза дороже.

revered:

У меня много запросов:
SELECT * FROM table WHERE id IN (1,2,3.......9998,9999)

Если в IN несколько элементов - то отрабатывает мгновенно.
Если в IN несколько сотен элементов то 0.1-0.2 сек. запрос выполняется.
Если в IN несколько тысяч элементов то до 20 сек. запрос выполняется.
Поиск идет по PRIMARY id.

Я так понимаю, что это можно ускорить настройкой сервера, просто не хватает знаний как правильно настроить.

1) Если элементы реально идут подряд, попробуйте id>=1 and id<=5 или еще лучше - id between 1 and 5

2) Если в последнем случае выбирается больше чем (примерно) 30% строк от размера таблицы, индекс может не использоваться, тут может помочь force index

3) select * в общем случае это ад и трэш. Наверняка хотя бы пару полей можно исключить, лучше писать select field2, field5 .. чем просто тупо *

Всего: 12159