2018.01.06Рейхсканцлер и обычным join-ом сопоставляется со второй табличкой, где лежит подгруженный список иероглифовИ что вам это join даст? Как вы определите, что все иероглифы слова включены?
2018.01.06
2018.01.06бкрс И что вам это join даст? Как вы определите, что все иероглифы слова включены? Например, так: сделать join, а потом полученное группировать по id слова с подсчетом count(иероглифов) в рамках каждой группы. Там, где count совпал с общим числом иероглифов в слове (эту инфу можно хранить как отдельно, так и считать в рамках того же join-а), там и имеет место ситуация, когда все иероглифы слова есть в загруженном списке. 2018.01.06
Кстати говоря, описанный выше фокус с базой можно сделать и на уровне ассоциативных массивов в JS и PHP: для этого нужно весь словарь bkrs представить не в виде линейного массива слов, а в виде ассоциативного массива, индексами которого являются отдельные иероглифы, а значениями которого - массивы слов, содержащих этот иероглиф. Тогда загруженный пользователем набор иероглифов будет служить просто набором индексов этого массива, по которому остается только пробежаться и собрать все встреченные слова, что тоже будет работать достаточно быстро.
2018.01.06
Цитата:Например, такЭто гораздо сложней обычного вложенного цикла. Миллионы слов и тысячи запросов это теоретический случай, кто с такими количествами работает, подобным не занимается. И это явно надо выносить на компьютер запрашиваемого, для сервера даже 1 секунда это дофига. Поэтому js тут идеален, частотный список (они обычно 10-50 тыс) и сотни иероглифов несколько секунд пожжужит, ничего страшного. 2018.01.06
2018.01.06Рейхсканцлер Кстати говоря, описанный выше фокус с базой можно сделать и на уровне ассоциативных массивов в JS и PHP: для этого нужно весь словарь bkrs представить не в виде линейного массива слов, а в виде ассоциативного массива, индексами которого являются отдельные иероглифы, а значениями которого - массивы слов, содержащих этот иероглиф. Тогда загруженный пользователем набор иероглифов будет служить просто набором индексов этого массива, по которому остается только пробежаться и собрать все встреченные слова, что тоже будет работать достаточно быстро.Можно, но тут основная проблема сложность написания, чем сложнее, тем меньше шансов, что кто-то сделает. Не уверен как js будет работать с миллиоными массивами. Я поэтому и сказал, что подобное интересно для тех кто пишет Но если бы я писал, ограничился бы частотной базой из 10000 слов, разбитой сразу поиероглифно. Поиск вложенными циклами, а оптимизация на уровне отсечения по случайному иероглифу (чтобы все слова без него ушли). И на выходе красивенький html/js файлик, кто хочет - пусть грузит свой компьютер (js слишком большой, чтобы постоянно грузить всем прохожим). В теории пол часа, на практике пол дня на подобное. 2018.01.06
2018.01.05бкрс С другой стороны, если цель изучать язык зубрением слов, то почему не взять тот же частотный список слов и идти по нему? Нет, по идее, не для зубрежки, а для чтения массивов слов. Как кто-то выразился, для освоения смысловых полей иероглифов. 2018.01.09
2018.01.09Павел Бызов Может , за деньги кто-нибудь из присутствующих сделает? Сколько может стоить? Давайте поточнее сформулируем ТЗ для самого простого варианта. 1) Сама программа должна иметь вид одиночного html файла, который можно разместить на сайте или держать просто у себя на компе. В составе файла уже должен быть базовый набор наиболее частых слов (например, первые 50 тыс). 2) Интерфейс: а) большое поле, куда можно вставлять в любом удобном виде набор иероглифов, по которому будут искаться слова. Поле должно быть рассчитано на словарный объем HSK. б) поле для выбора условий поиска: искать слова, в составе которых нашелся "хотя бы 1 иероглиф" / "все иероглифы" в) кнопка для запуска поиска г) табличка с результатами поиска в формате "№|слово", на слово можно кликать и открывать страницу bkrs с подробным описанием этого слова. д) сортировка таблицы - вначале группа слов с первым иероглифом из предложенного набора,затем - группа слов со вторым и тд. В рамках каждой такой группы сортировать слова по частоте использования (начиная с самых частых) и подсвечивать в каждом слове основной иероглиф группы。 Например, если вы указали в качестве набора иероглифов два иероглифа "好,看", то на выходе будет табличка вида: (слова с 好) 1.好 2.好看 3.看好 (слова с 看) 4.看 5.好看 6.看好 То есть, одно и то же слово 好看 окажется упомянутым в двух группах, поскольку в нем и первый иероглиф и второй из предложенного списка. Исключать такие дубликаты можно, но это будет неудобно (ведь хочется все слова, связанные с одним иероглифом, видеть рядышком, даже если они уже встречались в таблице выше) Я также думаю, нет смысла усложнять такой интерфейс разными вещами типа "выводить заодно пиньинь и перевод", потому что тогда сложность резко растет из-за того, что одно слово может иметь разные значения пиньиня и перевода. Думаю, достаточно просто ссылки на слово в bkrs. По поводу цены и сроков пишите в личку, сделаю. 2018.01.09
Программку согласно указанному ТЗ написал примерно за день, но пришлось немного отклониться от обещанного (сократил словарь до 20 тыс наиболее частоупотребимых слов)
Смотреть тут : http://zoracle.ru/chinese/findwords.html Дополнительные фичи: 1) сделана группировка слов по найденному иероглифу, так оказалось удобнее. В рамках каждой группе слов перечислены от частых слов к редким. 2) работает во всех браузерах, причем быстрее всего работает в Mozilla (1 секунда на всем списке слов HSK5) 3) интерфейс рассчитан в том числе на удобную работу с экрана мобильного телефона 2018.01.10
2018.01.10Рейхсканцлер Программку согласно указанному ТЗ написал примерно за день, но пришлось немного отклониться от обещанного (сократил словарь до 20 тыс наиболее частоупотребимых слов) 哥们,你这是太牛鼻了!!!赞!!! Именно так и представлял!!! Если бы еще добавить режим отсеивания дублей, было бы вообще идеально. 2018.01.10
|