Пример #1
0
        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();
        }
Пример #2
0
 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);
     }
 }