Сообщения Рейхсканцлер

1
>>>
2018.03.01werewitt Рейхсканцлер рекомендую кнопку сделать для калькуляции, а не автоматом. Чисто с точки зрения психологии и интерфейса - будет восприниматься как более быстрая Smile Ну да надо себе будет - сам сделаю, это ж просто JS

PS 20k это не так уж и много.

Да, забирайте скрипт себе, если хотите. Там логика простая, докрутить под себя несложно.
2018.03.01
ЛС Ответить
2
>>>
2018.03.01werewitt Шикарно Smile интересно, почему всего 20к? браузер на телефоне дохнет? я бы порекомендовал побольше слов докинуть - 50к хотя бы. Нынче даже телефоны не особо ограничены памятью/bandwidth.

Ограничение 20к, чтобы совсем ненужные редкости отсеивать, и чтобы быстрее грузилось. Есть версия и на 50к тут
2018.03.01
ЛС Ответить
3
>>>
Программку согласно указанному ТЗ написал примерно за день, но пришлось немного отклониться от обещанного (сократил словарь до 20 тыс наиболее частоупотребимых слов)

Смотреть тут : http://zoracle.ru/chinese/findwords.html

Дополнительные фичи:
1) сделана группировка слов по найденному иероглифу, так оказалось удобнее. В рамках каждой группе слов перечислены от частых слов к редким.
2) работает во всех браузерах, причем быстрее всего работает в Mozilla (1 секунда на всем списке слов HSK5)
3) интерфейс рассчитан в том числе на удобную работу с экрана мобильного телефона
2018.01.10
ЛС Ответить
4
>>>
2018.01.09Павел Бызов Может , за деньги кто-нибудь из присутствующих сделает? Сколько может стоить?

Давайте поточнее сформулируем ТЗ для самого простого варианта.

1) Сама программа должна иметь вид одиночного html файла, который можно разместить на сайте или держать просто у себя на компе. В составе файла уже должен быть базовый набор наиболее частых слов (например, первые 50 тыс).

2) Интерфейс:
а) большое поле, куда можно вставлять в любом удобном виде набор иероглифов, по которому будут искаться слова. Поле должно быть рассчитано на словарный объем HSK.
б) поле для выбора условий поиска: искать слова, в составе которых нашелся "хотя бы 1 иероглиф" / "все иероглифы"
в) кнопка для запуска поиска
г) табличка с результатами поиска в формате "№|слово", на слово можно кликать и открывать страницу bkrs с подробным описанием этого слова.
д) сортировка таблицы - вначале группа слов с первым иероглифом из предложенного набора,затем - группа слов со вторым и тд. В рамках каждой такой группы сортировать слова по частоте использования (начиная с самых частых) и подсвечивать в каждом слове основной иероглиф группы。

Например, если вы указали в качестве набора иероглифов два иероглифа "好,看", то на выходе будет табличка вида:

(слова с 好)
1.
2.
3.看
(слова с 看)
4.
5.好
6.

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

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

По поводу цены и сроков пишите в личку, сделаю.
2018.01.09
ЛС Ответить
5
>>>
Кстати говоря, описанный выше фокус с базой можно сделать и на уровне ассоциативных массивов в JS и PHP: для этого нужно весь словарь bkrs представить не в виде линейного массива слов, а в виде ассоциативного массива, индексами которого являются отдельные иероглифы, а значениями которого - массивы слов, содержащих этот иероглиф. Тогда загруженный пользователем набор иероглифов будет служить просто набором индексов этого массива, по которому остается только пробежаться и собрать все встреченные слова,  что тоже будет работать достаточно быстро.
2018.01.06
ЛС Ответить
6
>>>
2018.01.06бкрс И что вам это join даст? Как вы определите, что все иероглифы слова включены?

Например, так: сделать join, а потом полученное группировать по id слова с подсчетом count(иероглифов) в рамках каждой группы. Там, где count совпал с общим числом иероглифов в слове (эту инфу можно хранить как отдельно, так и считать в рамках того же join-а), там и имеет место ситуация, когда все иероглифы слова есть в загруженном списке.
2018.01.06
ЛС Ответить
7
>>>
2018.01.06бкрс Как минимум, это точно не проще. БД тут не имеет смысла, т.к. поиск внутри слов по каждому символу, сомневаюсь, что возможно написать запрос, а если и можно, база крякнет от такого.

Нет, это обычный индексный поиск, разумеется без "поиска внутри слов", а чисто по индексу. Каждое слово словаря bkrs поиероглифно транспонируется в виде набора строк в таблице типа "id слова/первый иероглиф слова", "id слова/второй иероглиф" и тд, потом этот единственный столбец с иероглифом (в котором тем самым будет каждый иероглиф каждого слова словаря) индексируется и обычным join-ом сопоставляется со второй табличкой, где лежит подгруженный список иероглифов. Если база Oracle, то будет в пределах 1 сек. работать при миллионе слов в словаре и тысяче иероглифов в предложенном списке, для Mysql надо смотреть. Впрочем, это общий случай, а для словаря / списка иероглифов гораздо меньших объемов (10 тыс. в словаре / сто иероглифов в подгруженном списке) сгодится любое решение на JS / PHP, даже без базы.

Но неважно, это все технические моменты, извиняюсь за оффтоп.
2018.01.06
ЛС Ответить
8
>>>
2018.01.05бкрс Достаточно интересно написать, если кто захочет. В идеале на js с формой, смотря как она будет с массивом на ван и больше слов работать.

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

Вполне полезная была бы фича, помогающая привыкнуть к смысловому диапазону отдельного иероглифа.
2018.01.05
ЛС Ответить
9
>>>
...
2018.01.05
ЛС Ответить