static void Main(string[] args) { Directory dir = new RAMDirectory(); CreateDocuments(dir); IndexReader reader = IndexReader.Open(dir, true); var searcher = new IndexSearcher(reader); int numDocs = reader.MaxDoc; var mlt = new Lucene.Net.Search.Similar.MoreLikeThis(reader); mlt.SetFieldNames(new String[] { "name" }); mlt.MinTermFreq = 1; mlt.MinDocFreq = 1; for (int docId = 0; docId < numDocs; docId++) { Document doc = reader.Document(docId); Console.WriteLine(doc.Get("name")); Query query = mlt.Like(docId); Console.WriteLine(" query = {0}", query); TopDocs similarDocs = searcher.Search(query, 10); if (similarDocs.TotalHits == 0) { Console.WriteLine(" None like this"); } for (int i = 0; i < similarDocs.ScoreDocs.Length; i++) { if (similarDocs.ScoreDocs[i].Doc != docId) { doc = reader.Document(similarDocs.ScoreDocs[i].Doc); Console.WriteLine(" -> {0}", doc.Get("name")); } } Console.WriteLine(); } searcher.Dispose(); reader.Dispose(); dir.Dispose(); }
private static void AssignParameters(Lucene.Net.Search.Similar.MoreLikeThis mlt, MoreLikeThisQuery parameters) { if (parameters.Boost != null) { mlt.Boost = parameters.Boost.Value; } if (parameters.BoostFactor != null) { mlt.BoostFactor = parameters.BoostFactor.Value; } if (parameters.MaximumNumberOfTokensParsed != null) { mlt.MaxNumTokensParsed = parameters.MaximumNumberOfTokensParsed.Value; } if (parameters.MaximumQueryTerms != null) { mlt.MaxQueryTerms = parameters.MaximumQueryTerms.Value; } if (parameters.MinimumWordLength != null) { mlt.MinWordLen = parameters.MinimumWordLength.Value; } if (parameters.MaximumWordLength != null) { mlt.MaxWordLen = parameters.MaximumWordLength.Value; } if (parameters.MinimumTermFrequency != null) { mlt.MinTermFreq = parameters.MinimumTermFrequency.Value; } if (parameters.MinimumDocumentFrequency != null) { mlt.MinDocFreq = parameters.MinimumDocumentFrequency.Value; } if (parameters.MaximumDocumentFrequency != null) { mlt.MaxDocFreq = parameters.MaximumDocumentFrequency.Value; } if (parameters.MaximumDocumentFrequencyPercentage != null) { mlt.SetMaxDocFreqPct(parameters.MaximumDocumentFrequencyPercentage.Value); } }