docs: #318 still trying to fix band couplets rhyme finding problem

This commit is contained in:
Hamid Reza Mohammadi 2022-05-06 10:21:05 +04:30
parent 52182dcb2f
commit cb90231d8e
2 changed files with 19 additions and 1 deletions

View File

@ -650,6 +650,18 @@ namespace RMuseum.Services.Implementation
var section = sections[i];
var verses = await context.GanjoorVerses.Where(v => v.PoemId == section.PoemId).OrderBy(v => v.VOrder).ToListAsync();
var bandVerses = FilterSectionVerses(section, verses);
var resRetry = LanguageUtils.FindRhyme(bandVerses, false, true);
if(!string.IsNullOrEmpty(resRetry.Rhyme))
{
section.RhymeLetters = resRetry.Rhyme;
context.Update(section);
await jobProgressServiceEF.UpdateJob(job.Id, progress);
if (section.GanjoorMetreId != null)
{
await _UpdateRelatedSections(context, (int)section.GanjoorMetreId, section.RhymeLetters);
}
continue;
}
if (_IsMasnavi(bandVerses))
{
var poemSections = await context.GanjoorPoemSections.Where(s => s.PoemId == section.PoemId).ToListAsync();
@ -711,6 +723,9 @@ namespace RMuseum.Services.Implementation
rightVerse.SectionIndex4 = verseSection.Index;
leftVerse.SectionIndex4 = verseSection.Index;
}
context.Update(rightVerse);
context.Update(leftVerse);
var rl = new List<GanjoorVerse>(); rl.Add(rightVerse); rl.Add(leftVerse);

View File

@ -93,12 +93,15 @@ namespace RMuseum.Services.Implementation
/// </summary>
/// <param name="verses"></param>
/// <param name="secondPhase"></param>
/// <param name="bandCouplets"></param>
/// <returns></returns>
public static GanjooRhymeAnalysisResult FindRhyme(List<GanjoorVerse> verses, bool secondPhase = false)
public static GanjooRhymeAnalysisResult FindRhyme(List<GanjoorVerse> verses, bool secondPhase = false, bool bandCouplets = false)
{
try
{
List<string> verseTextList = verses.Count == 2 ? verses.Select(v => v.Text).ToList()
: bandCouplets ?
verses.Where(v => v.VersePosition == VersePosition.CenteredVerse2).Select(v => v.Text).ToList()
: verses.Where(v => v.VersePosition == VersePosition.Left).Select(v => v.Text).ToList();
if (verseTextList.Count > 1)
{