Ejemplo n.º 1
0
        private static async Task <string> GetHanzi(AdminContext dbContext, YngdiengDocument?maybeYngdiengDocument, int?wordId)
        {
            var hanziFromIndex = maybeYngdiengDocument == null ? null : HanziUtils.HanziToString(maybeYngdiengDocument.HanziCanonical);

            if (!string.IsNullOrEmpty(hanziFromIndex))
            {
                return(hanziFromIndex);
            }
            var maybeWordFromDb = await dbContext.Words.SingleOrDefaultAsync(w => w.WordId == wordId);

            return(maybeWordFromDb != null ? maybeWordFromDb.Hanzi : string.Empty);
        }
        public RichTextNode ToRichTextNode(HistoricalDocument doc)
        {
            var sources = new List <string>();

            if (doc.CiklinSource != null)
            {
                sources.Add(zc.tM("戚林八音校注"));
            }
            if (doc.DfdSource != null)
            {
                sources.Add("榕腔注音辞典·目录");
            }
            var children = new List <RichTextNode>();

            children.Add(SectionHeader(zc.tH(HanziUtils.HanziToString(doc.HanziCanonical))));
            children.Add(Label(zc.tM("音韵地位(戚林八音)")));
            children.Add(SimpleText(PhonologyUtils.ToHanzi(doc.Initial, doc.Final, doc.Tone)));
            children.Add(Label(zc.tM("榕拼(八音)")));
            children.Add(SimpleText(doc.Yngping));
            children.Add(Label(zc.tM("教会罗马字")));
            children.Add(SimpleText(doc.Buc));
            if (!string.IsNullOrEmpty(doc.CiklinSource?.ExplanationCik))
            {
                children.Add(Label(zc.tM("戚书释义")));
                children.Add(SimpleText(zc.tM(doc.CiklinSource.ExplanationCik)));
            }
            if (!string.IsNullOrEmpty(doc.CiklinSource?.ExplanationLing))
            {
                children.Add(Label(zc.tM("林书释义")));
                children.Add(SimpleText(zc.tM(doc.CiklinSource.ExplanationLing)));
            }
            children.Add(Source(zc.tM("来源:" + string.Join(", ", sources))));
            return(new RichTextNode()
            {
                VerticalContainer = new RichTextNode.Types.VerticalContainerNode()
                {
                    Children =
                    {
                        children
                    }
                }
            });
        }
Ejemplo n.º 3
0
        private IEnumerable <SearchV2Response.Types.SearchCard> RenderDocs(IEnumerable <ScoreDoc> scoreDocs, ZhConverter zhConverter)
        {
            var searcher = this._indexHolder.LuceneIndexSearcher;

            return(scoreDocs.Select(sd =>
            {
                var docId = searcher.Doc(sd.Doc).GetField(LuceneUtils.Fields.DocId).GetStringValue();
                var ydDoc = _indexHolder.GetIndex().YngdiengDocuments.Single(y => y.DocId == docId);

                return new SearchV2Response.Types.SearchCard
                {
                    Word = new SearchV2Response.Types.SearchCard.Types.WordCard
                    {
                        Id = docId,
                        Yngping = RichTextUtil.FromString(ydDoc.YngpingSandhi.OrElse(ydDoc.YngpingUnderlying)),
                        Hanzi = RichTextUtil.FromString(zhConverter.tH(HanziUtils.HanziToString(ydDoc.HanziCanonical))),
                        Details = RichTextUtil.FromString(zhConverter.tM(Yngdieng.Backend.Services.Frontend.Words.GetSnippet
                                                                             (ydDoc, new Extension[] { }))),
                        Score = sd.Score
                    }
                };
            }));
        }