/// <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); }
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); }
private RankedSEDocument LoadRankedSEDocument(SEDocument SEDocument, int Rank, float RelevanceScore) { return(new RankedSEDocument(SEDocument.ID, SEDocument.Title, SEDocument.Author, SEDocument.Bibliographic, SEDocument.Abstract, Rank, RelevanceScore)); }