封装代码如下:
public MakerArtiImodel GetIndexModelById(int id) { string indexPath = StrHelper.rootPath + "XXXX/Index"; FSDirectory directory = FSDirectory.Open(new DirectoryInfo(indexPath), new NoLockFactory()); IndexReader reader = IndexReader.Open(directory, true); //创建一个索引库读取对象 IndexSearcher searcher = new IndexSearcher(reader); //创建一个搜索对象 Term term = new Term("Id", id.ToString()); Query query = new TermQuery(term); TopDocs topDocs = searcher.Search(query, 1); MakerArtiImodel mai = null; foreach (ScoreDoc scoreDoc in topDocs.ScoreDocs) { int docNum = scoreDoc.Doc; //这里的docNum是在这个集合中的索引号 Document doc = searcher.Doc(docNum); mai = new MakerArtiImodel { Id = id, Title = doc.Get("Title"), splendidContent = doc.Get("splendidContent"), categoryName = doc.Get("categoryName"), matchedTrade = doc.Get("matchedTrade"), postTime = Convert.ToDateTime(doc.Get("postTime")), }; } return mai; }
调用:
MakerArtiImodel mai = MakerArtiIManager.Instance.GetIndexModelById(articleId);