2

我有一个文档,它是一个文本文件中的 100 家公司的列表。它在 lucene 中被索引。它本身不存储,但向量被保存。名单中的一家公司名为 Apple Inc.。

还有另一个标题为“Apple Inc”的文档存储在 lucene 中。

我可以使用下面的代码成功地进行更像这样的搜索。我可以在 Lucene 中找到该文档,并成功地在标题和内容字段上执行搜索以找到类似的文档。

我的问题是,如何修改此代码,以便我可以找到标题中包含此内容的其他文档。即我如何调出带有 Title Apple 的文档。

我想搜索所选文档的内容与特定字段(例如标题);

 using (IndexSearcher searcher = new IndexSearcher(_Reader))
        {
            TermQuery tquery = new TermQuery(new Term("Oid", oid));
            TopDocs topdocs = searcher.Search(tquery, 1);
            int docId = topdocs.ScoreDocs[0].Doc;
            var moreLikeThis = new Lucene.Net.Search.Similar.MoreLikeThis(_Reader);
            moreLikeThis.Analyzer = new StandardAnalyzer(Lucene.Net.Util.Version.LUCENE_29);
            moreLikeThis.SetFieldNames(fields);
            moreLikeThis.MinWordLen = 2;
            var query = moreLikeThis.Like(docId);
            TopScoreDocCollector collector = TopScoreDocCollector.Create(topCount, true);
            searcher.Search(query, collector);
            ScoreDoc[] hits = collector.TopDocs().ScoreDocs;
            var result = new List<string>();
            for (int i = 0; i < hits.Length; i++)
            {
                docId = hits[i].Doc;
                float score = hits[i].Score;
                if (score > 0.5)
                {
                    Document doc = searcher.Doc(docId);
                    result.Add(doc.Get("Oid"));
                }
            }
            return result;
        }
4

0 回答 0