powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / перемножить все имеющиеся варианты слов - помогите, пожалуйста ! !!!
25 сообщений из 88, страница 3 из 4
перемножить все имеющиеся варианты слов - помогите, пожалуйста ! !!!
    #38791890
Фотография javajdbc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ElenaTomsk,

народ в интернете говорит что это
от нехватки места вообше или в ТЕМП
директории. Кто-то советует пересоздать, уменьшить
количество индексов.

Возможно имеет смысл оптимизировать по датапотоку:
Обрабатывать кусками по 5-10%.
Если есть возможность, хорошо бы за параллелить,
но это надо знать конкретно что вы написали.
...
Рейтинг: 0 / 0
перемножить все имеющиеся варианты слов - помогите, пожалуйста ! !!!
    #38792209
ElenaTomsk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
javajdbc,

Здравствуйте.


Дело в том, что я это тоже все уже прочитала и в своем предыдущем сообщении написала. Место есть, оперативной памяти тоже много, поэтому совершенно непонятно, что не работает.

Код это не мой вовсе, это tanglir написал, за что я ему очень благодарна, просто он не работает на моих данных настоящих.
Последний его код в этой ветке написаный.
...
Рейтинг: 0 / 0
перемножить все имеющиеся варианты слов - помогите, пожалуйста ! !!!
    #38792245
Фотография javajdbc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ElenaTomsk,

Пожалуйста, всегда давайте точные ссылки.
Вы про этот 16735620 код или какой?
Если по ссылке, то это генератор.

Для конкретного анализа нужен код который сей генератор создал.
Этот код 16715202 , как я понимаю был с ошибкой
и генератор потом был улучшен.

Таким образом, нужно:
1. реально сгенерированый код.
2. его ( ЕКСПЛЕЙН )
...
Рейтинг: 0 / 0
перемножить все имеющиеся варианты слов - помогите, пожалуйста ! !!!
    #38792250
Фотография javajdbc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
... и чтоб два раз не вставать.

1. ЕКПЛЕЙН сделать на реальной базе
(не волнуйтесь, это занимает секунду)

2. Когда вы получите сгенерированый код с кучей CROSS JOIN
сделайте и покажите ресультат:
select count(1) from <table>
где <табле> замените (по одной за раз) на все подряд таблицы с CROSS JOIN.
Т.е должно быть 5-8 результатов COUNT.
...
Рейтинг: 0 / 0
перемножить все имеющиеся варианты слов - помогите, пожалуйста ! !!!
    #38792454
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В принципе, если можно гарантировать, что ид фиксированных слов никогда не будут ссылаться на отсутствующие ид, то можно в генераторе лефтджойны заменить (секция "when 14" во втором групконкате) на просто джойны - может, оптимизатору станет полегче. Можно ещё ордербай убрать, вам же неважно, какие именно 20 результатов выйдут, или важно?
Ну и таки да, ждём эксплейн.
...
Рейтинг: 0 / 0
перемножить все имеющиеся варианты слов - помогите, пожалуйста ! !!!
    #38793946
ElenaTomsk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
tanglir,

Здравствуйте! Очень рада, что вы ответили!!! Знаете, у меня на боевых таблица, я их переделала немного названия, получается вот такой код для выполнения:

Код: sql
1.
2.
3.
4.
5.
6.
select concat(fixed1.cWord, ' ',fixed2.cWord, ' ',fixed3.cWord, ' ',fixed4.cWord, ' ',fixed5.cWord, ' ','<unknown wordtype!>', ' ',punctuat7.Punctuation, ' ','<unknown wordtype!>', ' ',noun9.Nominative, ' ',punctuat10.Punctuation, ' ',noun11.Nominative, ' ',punctuat12.Punctuation, ' ',fixed13.cWord, ' ',punctuat14.Punctuation, ' ',fixed15.cWord, ' ',fixed16.cWord, ' ',fixed17.cWord, ' ',punctuat18.Punctuation) as res from (select null from dual) ddd  LEFT JOIN 
          (SELECT f.cWord FROM tbl_fixedword f join tbl_templatedetail d on f.Id_FixedWord =d.id_word where d.PositionWord=1 and d.Id_Template=3) fixed1 on 1=1  LEFT JOIN 
          (SELECT f.cWord FROM tbl_fixedword f join tbl_templatedetail d on f.Id_FixedWord =d.id_word where d.PositionWord=2 and d.Id_Template=3) fixed2 on 1=1  LEFT JOIN 
          (SELECT f.cWord FROM tbl_fixedword f join tbl_templatedetail d on f.Id_FixedWord =d.id_word where d.PositionWord=3 and d.Id_Template=3) fixed3 on 1=1  LEFT JOIN 
          (SELECT f.cWord FROM tbl_fixedword f join tbl_templatedetail d on f.Id_FixedWord =d.id_word where d.PositionWord=4 and d.Id_Template=3) fixed4 on 1=1  LEFT JOIN 
          (SELECT f.cWord FROM tbl_fixedword f join tbl_templatedetail d on f.Id_FixedWord =d.id_word where d.PositionWord=5 and d.Id_Template=3) fixed5 on 1=1  cross join tbl_punctuation punctuat7  cross join tbl_noun noun9 cross join tbl_punctuation punctuat10 cross join tbl_noun noun11 cross join tbl_punctuation pu ORDER BY 1 LIMIT 10



и здесь есть вот здесь punctuat12 и punctuat18. Они у меня есть в tbl_templatedetail, в этих позициях, то-есть 12 и 18, но в собственно джойнах нет кода, последний tbl_punctuation punctuat10. Кроме того, как я поняла вашу логику, все значения из таблицы tbl_punctuation просто добавляются cross joinom, но это же тоже неверно, у меня же на нужном месте стоит или запятая или тире или еще что-нибудь одно, пунктуация, это просто разновидность фиксированных слов.

ТАКже прикладываю explain который сделался если я убираю из вышеприведенного кода как раз эти ссылки на punctuat, инече запрос не запускается совсем.

Извините, вы только не обижайтесь, пожалуйста, но может быть, я могу вам как-то оплатить работу? Потому что получается, что вы столько для меня делаете просто так, неудобно очень. :(
...
Рейтинг: 0 / 0
перемножить все имеющиеся варианты слов - помогите, пожалуйста ! !!!
    #38793958
ElenaTomsk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
javajdbc,

Здравствуйте.

Вот такие у меня результаты по выборке из каждой таблицы с explain:

по прилагательным так
1 SIMPLE tbl_adjective index (null) FK_tbl_adjective_tbl_comparison_Id_Comparison 1 (null) 390 Using index

по существительным так
1 SIMPLE tbl_noun index (null) FK_tbl_noun_tbl_wordnumber_Id_WordNumber 1 (null) 528 Using index

по глаголам так

1 SIMPLE tv index (null) FK_tbl_verb_tbl_infinitive_Id_Infinitive 1 (null) 157 Using index

по знакам препинания

1 SIMPLE tp index (null) PRIMARY 4 (null) 12 Using index

по фиксированным словам так вот

1 SIMPLE tf index (null) UI_cWord 198 (null) 2978 Using index


Вот я знаете не понимаю, почему только в последнем случае используются уникальный индекс, первичный ключ тоже не используется, при том что он есть у меня во всех таблицах, а почему-то используются индексы FK. Я думала, что при count должен использоваться именно PK.
...
Рейтинг: 0 / 0
перемножить все имеющиеся варианты слов - помогите, пожалуйста ! !!!
    #38793965
Фотография javajdbc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ElenaTomsk,

Елена, плохо отформатированый код -- сильно мешает.... сильно.
Вместо того что что-то умное (или не умное) сказать,
сначала я потратил 10 минут на форматирование:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
SELECT 
    CONCAT(fixed1.cWord,              ' ',
            fixed2.cWord,             ' ',
            fixed3.cWord,             ' ',
            fixed4.cWord,             ' ',
            fixed5.cWord,             ' ',
            '<unknown wordtype!>',    ' ',
            punctuat7.Punctuation,    ' ',
            '<unknown wordtype!>',    ' ',
            noun9.Nominative,         ' ',
            punctuat10.Punctuation,   ' ',
            noun11.Nominative,        ' ',
            punctuat12.Punctuation,   ' ',
            fixed13.cWord,            ' ',
            punctuat14.Punctuation,   ' ',
            fixed15.cWord,            ' ',
            fixed16.cWord,            ' ',
            fixed17.cWord,            ' ',
            punctuat18.Punctuation) AS res
FROM
    (SELECT NULL FROM DUAL) ddd
    
LEFT JOIN
    (SELECT  f.cWord
       FROM  tbl_fixedword f
       JOIN  tbl_templatedetail d ON f.Id_FixedWord = d.id_word
      WHERE  d.PositionWord = 1 AND d.Id_Template = 3
	) fixed1 ON 1 = 1
    
LEFT JOIN
    (SELECT  f.cWord
       FROM  tbl_fixedword f
       JOIN  tbl_templatedetail d ON f.Id_FixedWord = d.id_word
      WHERE  d.PositionWord = 2 AND d.Id_Template = 3
    ) fixed2 ON 1 = 1
    
LEFT JOIN
    (SELECT  f.cWord
	   FROM  tbl_fixedword f
       JOIN  tbl_templatedetail d ON f.Id_FixedWord = d.id_word
      WHERE  d.PositionWord = 3 AND d.Id_Template = 3
    ) fixed3 ON 1 = 1
    
LEFT JOIN
    (SELECT  f.cWord
       FROM  tbl_fixedword f
       JOIN  tbl_templatedetail d ON f.Id_FixedWord = d.id_word
      WHERE  d.PositionWord = 4 AND d.Id_Template = 3
    ) fixed4 ON 1 = 1
    
LEFT JOIN
    (SELECT  f.cWord
       FROM  tbl_fixedword f
       JOIN  tbl_templatedetail d ON f.Id_FixedWord = d.id_word
      WHERE  d.PositionWord = 5 AND d.Id_Template = 3
   ) fixed5 ON 1 = 1

CROSS JOIN    tbl_punctuation punctuat7
CROSS JOIN    tbl_noun noun9
CROSS JOIN    tbl_punctuation punctuat10
CROSS JOIN    tbl_noun noun11
CROSS JOIN    tbl_punctuation pu

ORDER BY 1
LIMIT 10
...
Рейтинг: 0 / 0
перемножить все имеющиеся варианты слов - помогите, пожалуйста ! !!!
    #38793977
ElenaTomsk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
javajdbc,

у меня так программа выдает, не знаю, как ее форматировать. Но посмотрела сейчас выполнение, действительно не хватает дискового пространства, но это просто ужасно! Выполнялось это примерно 5 минут и забрало 38 гигабайт на диске, больше просто нет и оно умерло.
...
Рейтинг: 0 / 0
перемножить все имеющиеся варианты слов - помогите, пожалуйста ! !!!
    #38793991
ElenaTomsk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
tanglir,

Ой, я когда убрала вот сейчас order by, знаете, оно сразу выполнилось, моментально! Скаожите пожалуйста, почему такая разница получается от просто сортировки, вот перед этим запускала, было пять минут и сьело весь диск?
...
Рейтинг: 0 / 0
перемножить все имеющиеся варианты слов - помогите, пожалуйста ! !!!
    #38794051
Фотография javajdbc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ElenaTomskjavajdbc,

у меня так программа выдает, не знаю, как ее форматировать. Но посмотрела сейчас выполнение, действительно не хватает дискового пространства, но это просто ужасно! Выполнялось это примерно 5 минут и забрало 38 гигабайт на диске, больше просто нет и оно умерло.


1. форматировать можно ручками, и во многих
программах есть опция ФОРМАТ (например в MySQL Workbench)

2. ОРДЕР БУ заставляет прграмму перебрать ВСЕ варинаты,
их у вас громадное количество и они забивают диск.

Если убрать ОРДЕР БУ то програма мгновено наберет первые 10
и выйдет по ЛИМИТ 10

3. по оптимизации пока не смотрел, может позже сегодня.
...
Рейтинг: 0 / 0
перемножить все имеющиеся варианты слов - помогите, пожалуйста ! !!!
    #38794065
Фотография javajdbc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ElenaTomskjavajdbc,

Здравствуйте.

Вот такие у меня результаты по выборке из каждой таблицы с explain:

по прилагательным так
1 SIMPLE tbl_adjective index (null) FK_tbl_adjective_tbl_comparison_Id_Comparison 1 (null) 390 Using index

по существительным так
1 SIMPLE tbl_noun index (null) FK_tbl_noun_tbl_wordnumber_Id_WordNumber 1 (null) 528 Using index

по глаголам так

1 SIMPLE tv index (null) FK_tbl_verb_tbl_infinitive_Id_Infinitive 1 (null) 157 Using index

по знакам препинания

1 SIMPLE tp index (null) PRIMARY 4 (null) 12 Using index

по фиксированным словам так вот

1 SIMPLE tf index (null) UI_cWord 198 (null) 2978 Using index


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


ну вообшето я спрашивал результат КАУТА а не ЕХПЛАИН этих маленьких СКЛов.
НО ЕХПЛАИН на самом деле показывает примерное количетво записей
и этого достаточно.
В виду специфики задания -- система должна "перемножить"
390 ажиктивов на 528 наунов на...на...на...
прочем столько раз сколько переменных слов в предложении.
Результат получается громадное чило записей и они убивают диск.
...
Рейтинг: 0 / 0
перемножить все имеющиеся варианты слов - помогите, пожалуйста ! !!!
    #38794066
Фотография javajdbc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
для форматирования по-ходу:

http://sqlformat.org/
...
Рейтинг: 0 / 0
перемножить все имеющиеся варианты слов - помогите, пожалуйста ! !!!
    #38794072
Фотография javajdbc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Елена,

напомните, плиз,

1. если слово фиксированое, то
его ВОБШЕ трогать не надо?

2. темплейты относятся только к переменным словам?

3. подвердите (или опровергинете) что все пунктуации
на самом деле фиксированы. Если так, можно ли слить их в
фиксированые слова?

4. сгенерированый СКЛ вызывает несколько вопросов
(типа #1 и #2 вверху). МОжете ли вы подвердить что логика
сгенерированого запроса верная?

5. Если сможете, попробуйте БЕЗ генератора самой составить
СКЛ для какого нибудь конкретного единичного предложения.
...
Рейтинг: 0 / 0
перемножить все имеющиеся варианты слов - помогите, пожалуйста ! !!!
    #38794154
ElenaTomsk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
javajdbc,

Здравствуйте.

Фиксированные слова, да. Они не меняются.

Теплейтдетайл содержит в себе полное описание всей фразы. В нем и изменяемые и неизменяемые слова.

Знаки препинания можно было бы вынести в фиксированные, но зачем? У меня их всего 12, а фиксированных слов больше, конечно, там есть идекс у меня, только все равно не понятно, зачем сливать. Я их специально разделяла для достижения максимальной скорости.

То как работает код от tanglir, очень похоже на то, что мне нужно, но окончательно не могу сказать, потому что не получается полную фразу сделать пока.
...
Рейтинг: 0 / 0
перемножить все имеющиеся варианты слов - помогите, пожалуйста ! !!!
    #38794253
ElenaTomsk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
tanglir,

с тем, почему пропадают куда-то punctuation12 и так далее - тоже разобралась. Не хватает длины varchar, даже максимальной, поставила mediumtext и все стало нормально!
...
Рейтинг: 0 / 0
перемножить все имеющиеся варианты слов - помогите, пожалуйста ! !!!
    #38794330
Фотография javajdbc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ElenaTomskjavajdbc,

Здравствуйте.

Фиксированные слова, да. Они не меняются.

Теплейтдетайл содержит в себе полное описание всей фразы. В нем и изменяемые и неизменяемые слова.

Знаки препинания можно было бы вынести в фиксированные, но зачем? У меня их всего 12, а фиксированных слов больше, конечно, там есть идекс у меня, только все равно не понятно, зачем сливать. Я их специально разделяла для достижения максимальной скорости.

То как работает код от tanglir, очень похоже на то, что мне нужно, но окончательно не могу сказать, потому что не получается полную фразу сделать пока.


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

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

3. знаете ли вы что такое денормализация?
Кто вам составил схему?

Ваша схема какято дуальная, с одной стороны
непонятно зачем разные типы слов вынесены в разные таблицы,
а с другой стороны используются ИД слов вместо более
привычного САМОГО слова как ИД.
...
Рейтинг: 0 / 0
перемножить все имеющиеся варианты слов - помогите, пожалуйста ! !!!
    #38794439
ElenaTomsk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
javajdbc,

Можно не добавлять в таблицу, а просто переделатаь код, что я и сделала. Теперь стало правильно подбирать пунктуацию.
Что такое денормализация, я знаю. И еще я знаю, что нормализация куда лучше, не вижу никаких плюсов от слияния, извините.

Код получился вот такой, непонятно только одно, может быть, можно как-то сделать чтобы не генерировать его заново каждый раз?
Или я глупости говорю? :( Очень смущает большое колличество джойнов к одной и то же таблице.
...
Рейтинг: 0 / 0
перемножить все имеющиеся варианты слов - помогите, пожалуйста ! !!!
    #38794486
Фотография javajdbc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>> javajdbc,

>> Можно не добавлять в таблицу, а просто переделатаь код, что я и сделала.
>> Теперь стало правильно подбирать пунктуацию.

OK, в генераторе изменени вроде правильно. ПО любому имеет смысл
показывать результат генерации тоже.

>> Что такое денормализация, я знаю.
>> И еще я знаю, что нормализация куда лучше,
>> не вижу никаких плюсов от слияния,

я говорил про две (несвязаные) вещи:
-- слияние пунктуации и фиксированых слов
-- денормализация -- замена ИД слова на само слово
во избежании дополнительных жоинтов

>> извините.

Не надо извинятся. Задачу можно решить разными способами.
В том числе и без слияния и без денормализации.
Пока надо сделать ЛЮБОЙ логическио правильно работаюший
вариант. Вернемся к оптимизации после логической валидации
решения.

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

К сожалению, чистой СКЛ не позволяет сделать то что вы хотите.
По определению -- СКЛ требуюет знать связки в момент
написания, а у вас в момент выполнения может оказатся
разные связки.

Теоретически, ЕСЛИ у вас конечное (не больше чем Н) количество слов в предложении
и ЕСЛИ у вас конечное число типов слов (не нольше чем М),
то можно написать СУМАШЕДШИЙ и ОЧЕНЬ МЕДЛЕНЫЙ скл с перемножением
всех М типов на каждом из Н слов.

Остается только генерации СКЛ на лету для каждого предложения.
Напромер как предложил Танглир или на жаве/ц#/руби итд.

>> Или я глупости говорю? :(

Вы имеете право говорить и желать все что угодно.
Ответ остается в силе:
В пределах СКЛ ваша задача (практически) не решается.
С использованием Stored Procedures или других языков -- пожалуйста.

>> Очень смущает большое
>> колличество джойнов к одной и то же таблице.

Ответ простой -- один жоинт на каждое переменое слово.
У вас будет 20 переменых слов в предложении -- будет 20 жоинтов.

(Жоинты на фиксированые слова можно не считать,
они быстрые. К томуже по логике не нужны и
легко убираются легкой денормализацией).
...
Рейтинг: 0 / 0
перемножить все имеющиеся варианты слов - помогите, пожалуйста ! !!!
    #38794567
ElenaTomsk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
javajdbc,

А разве нельзя сделать один джойн к таблице изменяемых слов? Или оптимизатор сам поймет, что несколько раз подключиться к одной таблице ненужно?

А можно сделать джойн с функциями или хранимиыми процедурами? Имеющийся код уже очень трудно читается, а мне еще нужно добавить к нему еще более совсем сложные конструкции. Если бы вот можно было бы куски с джойнами по фиксированным например словам бы вынести бы куда-то в функцию, она бы уже вернула рекордсет и с ним джойн. А саму функцию изменять было бы проще. Но видимо функцию нельзя, она же одно значение всегда возвращает, а надо много. Как-то иначе можно?

все также не могу понять, зачем объединять таблицы фиксированных слов и пунктуацию, какой от этого выигрышь, кроме упрощения написания.
...
Рейтинг: 0 / 0
перемножить все имеющиеся варианты слов - помогите, пожалуйста ! !!!
    #38794792
Фотография javajdbc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>> А разве нельзя сделать один джойн к таблице изменяемых слов?
>> Или оптимизатор сам поймет, что несколько раз подключиться к одной таблице ненужно?

Вы поставили задачу: на КАЖДОЕ переменое слово перебрать варианты.
КАЖДЫЙ перебор есть новый джоин (если мы делаем это на СКЛ)

>> А можно сделать джойн с функциями или хранимиыми процедурами?
Имеющийся код уже очень трудно читается, а мне еще нужно добавить
к нему еще более совсем сложные конструкции. Если бы вот можно было
бы куски с джойнами по фиксированным например словам бы вынести
бы куда-то в функцию, она бы уже вернула рекордсет и с ним джойн.
А саму функцию изменять было бы проще. Но видимо функцию нельзя,
она же одно значение всегда возвращает, а надо много. Как-то иначе можно?

Вот! мы подходим к идее расширить рамки за пределы (чистого) СКЛа.
Можно создать такую програму на ЛЮБОМ языке - хранимые
процедурым, жава, фортран, идт.
По сути, програма ниже делает тоже самое что и генератор
Танглира.

- - - - - - - -

Входная переменая ПРЕДЛОЖЕНИЕ(список слов с типами)
ВЫходная переменая РЕСАЛТ_СЕТ(список предложений)

для каждого СЛОВО из ПРЕДЛОЖЕНИЕ
СТАРТ
ЕСЛИ СЛОВО.тип==фикс то "добавать слово в РЕСАЛТ_СЕТ".
АЛИ-НЕТ то селект соответствуюшие ВАРИАНТЫ из таблицы и "добавить ВАРИНАТЫ в РЕСУЛТ_СЕТ"
ЕНД
вернуть РЕСУЛТ_СЕТ

- - - - - - -

процедура "добавать слово в РЕСАЛТ_СЕТ" и "добавить ВАРИНАТЫ в РЕСУЛТ_СЕТ"
будут довольно простые тоже.

Конечно, если у вас 100 переменых по 10 тысяч варинатов -- вы убьете
компютер хоть на СКЛ, хоть на любом языке.

- - - - - - - -



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

Слитием всех фиксированых фрагментов, а также слитием
ВСЕ слов в одну таблицу вы сильно упростите генератор без
практически никакой потери скорости.
Упрошение генератора -- меньше ошибок и
лучшая читабельность и понимание происходяшего.
...
Рейтинг: 0 / 0
перемножить все имеющиеся варианты слов - помогите, пожалуйста ! !!!
    #38796763
ElenaTomsk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
javajdbc,

Большое спасибо за советы. Наверное, дальше я уже сама все доделаю, есть только один самый последний вопрос. Он скорее к tanglir, но может быть вы тоже знаете? Как можно сделать, так, чтобы не попадали дубли? Наверное, я сама тоже знаю, надо применить Distinct. Но может быть можно сделать так, чтобы они эти дубли просто сразу не попадали, какое-то там условие добавить.
Извините, если я глупости говорю.
...
Рейтинг: 0 / 0
перемножить все имеющиеся варианты слов - помогите, пожалуйста ! !!!
    #38796876
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ElenaTomsk, дубли чего? По идее каждое предложение и так будет уникально, если дублей слов нет в исходных таблицах.
Или вы про "дубли" с одинаковыми словами, но разной пунктуацией? Так переделайте код для пунктуации по аналогии с кодом для фикс. слов (я уже это предлагал), и эти "дубли" исчезнут.
...
Рейтинг: 0 / 0
перемножить все имеющиеся варианты слов - помогите, пожалуйста ! !!!
    #38799469
ElenaTomsk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
tanglir,

Здравствуйте. Я просто плохо описываю, наверное. Потому что хочется самой разобраться, но не получается.
У меня там есть еще дополнительные настройки, которые помогают работать с предложениями. Например, описание должностей или описание действий, или по возрасту группировка, много еще всяких условий. Это лежит в двух дополнительных таблицах tbl_subdirection and tbl_attribute. Между ними и деталями темплейта установлена связь, это таблицы tbl_l_templatedetail_subdirection и
tbl_l_templatedetail_attribute. И такие же таблицы есть для связи с существительным: tbl_l_noun_subdirection and tbl_l_noun_attribute.

tbl_subdirection может только одно значение содержать, а вот атрибуты много : нампример студент и солдат могут быть такими атрибутами:
1 молодые люди
2 мужчины

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

У вас было cross join noun

у меня стало
cross join
(SELECT n.Nominative, na.Id_Attribute FROM
tbl_templatedetail tt
JOIN tbl_l_templatedetail_subdirection ts ON tt.Id_TemplateDetail = ts.Id_TemplateDetail
JOIN tbl_l_templatedetail_attribute ta ON tt.Id_TemplateDetail = ta.Id_TemplateDetail
JOIN tbl_l_noun_subdirection ns ON ts.Id_SubDirection = ns.Id_SubDirection
JOIN tbl_l_noun_attribute na ON ta.Id_Attribute = na.Id_Attribute
JOIN tbl_noun n ON ns.Id_Noun = n.Id_Noun
WHERE tt.Id_Template = 3 AND tt.Id_WordClass = 10) noun

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

А с фиксированными словами я уже все поменяла ! Работает хорошо и правильно !!!
...
Рейтинг: 0 / 0
перемножить все имеющиеся варианты слов - помогите, пожалуйста ! !!!
    #38807856
ElenaTomsk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте! tanglir, помогите, пожалуйста, закончить ! совсем чуть-чуть осталось, а без вас у меня никак не получается. :~((((((
...
Рейтинг: 0 / 0
25 сообщений из 88, страница 3 из 4
Форумы / MySQL [игнор отключен] [закрыт для гостей] / перемножить все имеющиеся варианты слов - помогите, пожалуйста ! !!!
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]