Beispiel #1
0
        /// <summary>
        /// Indexes a given document into the index
        /// </summary>
        /// <param name="text">The text to index</param>
        private void IndexDocument(SEDocument document)
        {
            Field DocumentIdField = new Field(SEDocument.DOCUMENTID_FN, document.ID, Field.Store.YES, Field.Index.NO, Field.TermVector.NO);
            Field TitleField      = new Field(SEDocument.TITLE_FN, document.Title, Field.Store.NO, Field.Index.ANALYZED, Field.TermVector.NO);

            TitleField.Boost = _TitleBoostValue;
            Field AbstractField = new Field(SEDocument.ABSTRACT_FN, document.Abstract, Field.Store.NO, Field.Index.ANALYZED, Field.TermVector.NO);

            AbstractField.Boost = _AbstractBoostValue;
            Document doc = new Document();

            doc.Add(DocumentIdField);
            doc.Add(TitleField);
            doc.Add(AbstractField);

            _IndexWriter.AddDocument(doc);
        }
Beispiel #2
0
        public SearchCollectionResult SearchCollection(Query Query)
        {
            SearchCollectionResult SearchCollectionResult = new SearchCollectionResult();
            TopDocs TopDocs = _IndexSearcher.Search(Query, 1400);

            SearchCollectionResult.SearchEndDateTime = DateTime.Now;
            SearchCollectionResult.RankedResults     = new List <RankedSEDocument>();

            int Rank = 1;

            foreach (ScoreDoc ScoreDoc in TopDocs.ScoreDocs)
            {
                Document Document   = _IndexSearcher.Doc(ScoreDoc.Doc);
                string   DocumentID = Document.Get(SEDocument.DOCUMENTID_FN).ToString();

                SEDocument CurrentDoc = _SourceCollection.Find(d => d.ID == DocumentID);
                SearchCollectionResult.RankedResults.Add(LoadRankedSEDocument(CurrentDoc, Rank, ScoreDoc.Score));

                Rank++;
            }


            return(SearchCollectionResult);
        }
Beispiel #3
0
 private RankedSEDocument LoadRankedSEDocument(SEDocument SEDocument, int Rank, float RelevanceScore)
 {
     return(new RankedSEDocument(SEDocument.ID, SEDocument.Title, SEDocument.Author, SEDocument.Bibliographic, SEDocument.Abstract, Rank, RelevanceScore));
 }