Ejemplo n.º 1
0
        private IEnumerable <ContentSearchResult> EnumSearchResults(int start, Searcher searcher, TopDocsCollector collector, int limit)
        {
            TopDocs results = collector.TopDocs();
            float   max     = results.GetMaxScore();

            ScoreDoc[] found = results.scoreDocs;
            limit = Math.Min(limit, found.Length);

            for (int i = start; i < limit; i++)
            {
                ScoreDoc doc     = found[i];
                Document docInfo = searcher.Doc(doc.doc);

                ContentSearchResult.Builder builder = new ContentSearchResult.Builder();
                builder.SetRanking((uint)Math.Max(0, Math.Min(100, (int)(doc.score / max * 100f))));
                builder.SetUri(docInfo.GetField("uri").StringValue());
                builder.SetTitle(docInfo.GetField("title").StringValue());
                builder.SetBlurb(docInfo.GetField("blurb").StringValue());
                builder.SetModified(DateTime.ParseExact(docInfo.GetField("modified").StringValue(),
                                                        "yyyy-MM-dd HH:mm:ss", CultureInfo.InvariantCulture,
                                                        DateTimeStyles.None));
                ContentRecord record;
                if (TryGetValue(builder.Uri, out record))
                {
                    builder.SetRecord(record);
                }

                yield return(builder.Build());
            }
        }
Ejemplo n.º 2
0
	    private IEnumerable<ContentSearchResult> EnumSearchResults(int start, Searcher searcher, TopDocsCollector collector, int limit)
	    {
	        TopDocs results = collector.TopDocs();
	        float max = results.GetMaxScore();
	        ScoreDoc[] found = results.scoreDocs;
	        limit = Math.Min(limit, found.Length);

	        for (int i = start; i < limit; i++)
	        {
	            ScoreDoc doc = found[i];
	            Document docInfo = searcher.Doc(doc.doc);

	            ContentSearchResult.Builder builder = new ContentSearchResult.Builder();
	            builder.SetRanking((uint) Math.Max(0, Math.Min(100, (int) (doc.score/max*100f))));
	            builder.SetUri(docInfo.GetField("uri").StringValue());
	            builder.SetTitle(docInfo.GetField("title").StringValue());
	            builder.SetBlurb(docInfo.GetField("blurb").StringValue());
	            builder.SetModified(DateTime.ParseExact(docInfo.GetField("modified").StringValue(),
	                                                    "yyyy-MM-dd HH:mm:ss", CultureInfo.InvariantCulture,
	                                                    DateTimeStyles.None));
	            ContentRecord record;
	            if (TryGetValue(builder.Uri, out record))
	            {
	                builder.SetRecord(record);
	            }

	            yield return builder.Build();
	        }
	    }