mishanya Опубликовано 27 июня, 2015 Автор Жалоба Поделиться Опубликовано 27 июня, 2015 Насколько это ресурсоемко если склонять по 2 свойства товара ...а товаров 5тыс? Можно ли это вызывать только в случае ошибки при связи с Яндексом? насчет ресурсоемкости не знаю. но помоему лучше делать запрос в базу чем каждый раз к апи яндекса, которое иногда тупит. хотя лучше наверное на этот вопрос дадут более опытные программисты. насчет того можно ли вызывать запрос в базу только при ошибке в яндекс, можно, но тогда всеровно нужно будет проверять базу на наличие такого слова и добавления его в базу. Цитата Ссылка на сообщение Поделиться на другие сайты
Maksclub Опубликовано 27 июня, 2015 Жалоба Поделиться Опубликовано 27 июня, 2015 насчет ресурсоемкости не знаю. но помоему лучше делать запрос в базу чем каждый раз к апи яндекса, которое иногда тупит. хотя лучше наверное на этот вопрос дадут более опытные программисты. насчет того можно ли вызывать запрос в базу только при ошибке в яндекс, можно, но тогда всеровно нужно будет проверять базу на наличие такого слова и добавления его в базу. Спасибо большое за решение и его улучшение ! здоров, можно оживить title, для этого и буду использовать Цитата Ссылка на сообщение Поделиться на другие сайты
jonny008 Опубликовано 13 мая, 2016 Жалоба Поделиться Опубликовано 13 мая, 2016 Яндекс Склонятор погиб. Но появился http://api.morpher.ru/WebService.asmx/GetXml?s=Екатеринбург Цитата Ссылка на сообщение Поделиться на другие сайты
mishanya Опубликовано 13 мая, 2016 Автор Жалоба Поделиться Опубликовано 13 мая, 2016 Яндекс Склонятор погиб. Но появился http://api.morpher.ru/WebService.asmx/GetXml?s=Екатеринбург спасибо, решение для этого апи обновлю Цитата Ссылка на сообщение Поделиться на другие сайты
Решение mishanya Опубликовано 13 мая, 2016 Автор Решение Жалоба Поделиться Опубликовано 13 мая, 2016 (изменено) UPD 3.0 с новым апи и записью падежей в базу 1. делаем запрос в базу CREATE TABLE IF NOT EXISTS `s_declination` ( `id` int(11) NOT NULL AUTO_INCREMENT, `phrase` varchar(255) NOT NULL, `declination` varchar(1024) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 2. Регистрируем плагин, для этого в файл api/Design.php (примерно строка 42) добавляем: $this->smarty->registerPlugin('modifier', 'declination', array($this, 'declination_modifier')); 3. Дальше добавим в самый конец функцию для обработки нового апи и возвращения падежей (если у вас была старая ф-я версии 1 или 2, нужно ее удалить): public function declination_modifier($text, $numForm = null, $numType = 'О') { // Смотрим есть ли в базе сколонение $query = $this->db->placehold("SELECT d.id, d.phrase, d.declination FROM __declination d WHERE d.phrase=? LIMIT 1", $text); $this->db->query($query); $d = $this->db->result(); if($d) { $result = unserialize($d->declination); } else { $urlXml = "https://ws3.morpher.ru/russian/declension?s=".urlencode($text); $d = @simplexml_load_file($urlXml); $d = (array)$d; if(!empty($d)){ $arrData = array(); $arrData['И']['О'] = (string) $text; foreach ($d as $key=>$val) { if(!is_object($val)) $arrData[$key]['О'] = (string) $val; else { $multiple = (array)$val; foreach ($multiple as $key=>$m) { $arrData[$key]['М'] = (string) $m; } } } $result = $arrData; $query = $this->db->placehold("INSERT INTO __declination SET ?%", array('phrase'=>$text, 'declination'=>serialize($result))); $this->db->query($query); } } if($numForm) { if( isset($result[$numForm][$numType]) ) { return $result[$numForm][$numType]; } else return $text; } else { return $result; } } Как использовать: для нужной переменной добавляем модификатор |declination:падеж:тип_падежанапример: {$product->name|declination:'Д':'О'} {'Главная'|declination:'Р':'М'} Список падежей:И - Именительный падежР - Родительный падежД - Дательный падежВ - Винительный падежТ - Творительный падежП - Предложный падеж Тип падежа:О - единственныйМ - множественный Изменено 16 августа, 2017 пользователем mishanya Цитата Ссылка на сообщение Поделиться на другие сайты
Kors Опубликовано 13 мая, 2016 Жалоба Поделиться Опубликовано 13 мая, 2016 1. Тип падежа - что это? Может, имеется в виду ЧИСЛО, как обычно в русском языке?2. {$product->name|declination:'Д':'О'} - в этом примере тип падежа не соответствует описанию возможных типов .3. Может, имелось в виду "O - единственный" ? Цитата Ссылка на сообщение Поделиться на другие сайты
mishanya Опубликовано 13 мая, 2016 Автор Жалоба Поделиться Опубликовано 13 мая, 2016 1. Тип падежа - что это? Может, имеется в виду ЧИСЛО, как обычно в русском языке?2. {$product->name|declination:'Д':'О'} - в этом примере тип падежа не соответствует описанию возможных типов .3. Может, имелось в виду "O - единственный" ? да, исправил тип падежа. Цитата Ссылка на сообщение Поделиться на другие сайты
daiv Опубликовано 22 июля, 2016 Жалоба Поделиться Опубликовано 22 июля, 2016 А из Множественного перевести в Единственное как? Цитата Ссылка на сообщение Поделиться на другие сайты
mishanya Опубликовано 23 июля, 2016 Автор Жалоба Поделиться Опубликовано 23 июля, 2016 А из Множественного перевести в Единственное как? в сервисе не вижу такого апи к сожалению. Цитата Ссылка на сообщение Поделиться на другие сайты
service79 Опубликовано 28 сентября, 2016 Жалоба Поделиться Опубликовано 28 сентября, 2016 (изменено) Подскажите, пожалуйста, а как использовать вариант пользовательского словаря? Есть слова, которые данный сервис не правильно склоняет, но при этом вычитал, что есть возможность использования XML-словаря, где можно прописать слова-исключения... Как его прописать? Вид файла такой: <?xml version="1.0" encoding="utf-8"?><dictionary xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:noNamespaceSchemaLocation="Russian.xsd"><entry><singular><И>Гвардейский ордена Ленина Краснознаменный полк</И><Р>Гвардейского ордена Ленина Краснознаменного полка</Р><Д>Гвардейскому ордена Ленина Краснознаменному полку</Д><В>Гвардейский ордена Ленина Краснознаменный полк</В><Т>Гвардейским ордена Ленина Краснознаменным полком</Т><П>Гвардейском ордена Ленина Краснознаменном полке</П><М>в Гвардейском ордена Ленина Краснознаменном полку</М></singular></entry></dictionary> Изменено 28 сентября, 2016 пользователем service79 Цитата Ссылка на сообщение Поделиться на другие сайты
SeregaSobol Опубликовано 15 августа, 2017 Жалоба Поделиться Опубликовано 15 августа, 2017 (изменено) В данный момент изменился адрес запроса на$urlXml = "https://ws3.morpher.ru/russian/declension?s=".urlencode($text);и добавились новые виды склонения. Изменено 15 августа, 2017 пользователем SeregaSobol Цитата Ссылка на сообщение Поделиться на другие сайты
mishanya Опубликовано 16 августа, 2017 Автор Жалоба Поделиться Опубликовано 16 августа, 2017 В данный момент изменился адрес запроса на$urlXml = "https://ws3.morpher.ru/russian/declension?s=".urlencode($text);и добавились новые виды склонения. да вижу, будет время, обновлю, пока не очень с этим Цитата Ссылка на сообщение Поделиться на другие сайты
bananovsv Опубликовано 20 августа, 2017 Жалоба Поделиться Опубликовано 20 августа, 2017 А как сделать его чувствительным к регистру? Если он сохранил слово с прописной буквы, то он потом заменит слово со строчной на просклоненное с прописной, потому что в базе его таким найдет. Цитата Ссылка на сообщение Поделиться на другие сайты
mishanya Опубликовано 20 августа, 2017 Автор Жалоба Поделиться Опубликовано 20 августа, 2017 А как сделать его чувствительным к регистру? Если он сохранил слово с прописной буквы, то он потом заменит слово со строчной на просклоненное с прописной, потому что в базе его таким найдет.а в чем разница? Цитата Ссылка на сообщение Поделиться на другие сайты
bananovsv Опубликовано 20 августа, 2017 Жалоба Поделиться Опубликовано 20 августа, 2017 (изменено) а в чем разница? Ну вот есть слово «Арбуз» с прописной буквы. Он его просклоняет: Арбуз, Арбуза, Арбузу… А потом у вас в тексте будет слово «арбуз» со строчной буквы. И он уже склонять не будет, а возьмёт из базы. А там это слово всегда с прописной. Хотелось бы, чтобы при поиске в базе «Арбуз» ≠ «арбуз». Или может кто знает более изящное решение этой проблемы. Изменено 20 августа, 2017 пользователем bananovsv Цитата Ссылка на сообщение Поделиться на другие сайты
chocolate_moles Опубликовано 21 августа, 2017 Жалоба Поделиться Опубликовано 21 августа, 2017 (изменено) Или может кто знает более изящное решение этой проблемы. Измените запрос добавив в него BINARY $query = $this->db->placehold("SELECT ... FROM __declination d WHERE d.phrase=BINARY ? LIMIT 1", $text); Изменено 21 августа, 2017 пользователем chocolate_moles Цитата Ссылка на сообщение Поделиться на другие сайты
bananovsv Опубликовано 21 августа, 2017 Жалоба Поделиться Опубликовано 21 августа, 2017 Измените запрос добавив в него BINARY Спасибо. Цитата Ссылка на сообщение Поделиться на другие сайты
FDA Опубликовано 22 сентября, 2017 Жалоба Поделиться Опубликовано 22 сентября, 2017 (изменено) Спасибо Изменено 22 сентября, 2017 пользователем FDA Цитата Ссылка на сообщение Поделиться на другие сайты
service79 Опубликовано 22 сентября, 2017 Жалоба Поделиться Опубликовано 22 сентября, 2017 Теперь в функции надо поменять адресс:$urlXml = "https://ws3.morpher.ru/russian/declension?s=".urlencode($text);на$urlXml = "http://ws3.morpher.ru/russian/declension?s=".urlencode($text);зачем? по https работает же?! Цитата Ссылка на сообщение Поделиться на другие сайты
FDA Опубликовано 22 сентября, 2017 Жалоба Поделиться Опубликовано 22 сентября, 2017 зачем? по https работает же?!Сори, у меня не работало какое-то время, я переделал. Но теперь опять все нормально, исправил пост Цитата Ссылка на сообщение Поделиться на другие сайты
bananovsv Опубликовано 17 ноября, 2017 Жалоба Поделиться Опубликовано 17 ноября, 2017 У всех перестало работать? Цитата Ссылка на сообщение Поделиться на другие сайты
service79 Опубликовано 17 ноября, 2017 Жалоба Поделиться Опубликовано 17 ноября, 2017 (изменено) У всех перестало работать?все работает нормально.. вот для проверки:https://ws3.morpher.ru/russian/declension?s=%D1%82%D0%BE%D0%B2%D0%B0%D1%80 Изменено 17 ноября, 2017 пользователем service79 Цитата Ссылка на сообщение Поделиться на другие сайты
bananovsv Опубликовано 18 ноября, 2017 Жалоба Поделиться Опубликовано 18 ноября, 2017 (изменено) все работает нормально.. вот для проверки:https://ws3.morpher.ru/russian/declension?s=%D1%82%D0%BE%D0%B2%D0%B0%D1%80 У меня ошибка по ссылке: Насколько я понял, у него просрочен сертификат. Изменено 18 ноября, 2017 пользователем bananovsv Цитата Ссылка на сообщение Поделиться на другие сайты
service79 Опубликовано 18 ноября, 2017 Жалоба Поделиться Опубликовано 18 ноября, 2017 (изменено) У меня ошибка по ссылке:Это не ошибка, а вопрос принятия сертификата безопасности.По факту вот так: http://prntscr.com/hbzm1o Изменено 18 ноября, 2017 пользователем service79 Цитата Ссылка на сообщение Поделиться на другие сайты
bananovsv Опубликовано 18 ноября, 2017 Жалоба Поделиться Опубликовано 18 ноября, 2017 Это не ошибка, а вопрос принятия сертификата безопасности.По факту вот так: http://prntscr.com/hbzm1o В браузере-то я могу его принять. А сервер мой — нет. Что с этим делать? Цитата Ссылка на сообщение Поделиться на другие сайты
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.