コード例 #1
0
        public List <string> GetDocumentsSimilarToDocument(string document_filename)
        {
            List <string> fingerprints = new List <string>();

            IndexReader index_reader   = IndexReader.Open(LIBRARY_INDEX_BASE_PATH, true);
            Searcher    index_searcher = new IndexSearcher(index_reader);

            LuceneMoreLikeThis mlt = new LuceneMoreLikeThis(index_reader);

            mlt.SetFieldNames(new string[] { "content" });
            mlt.SetMinTermFreq(0);

            Query query = mlt.Like(new StreamReader(document_filename));
            Hits  hits  = index_searcher.Search(query);
            var   i     = hits.Iterator();

            while (i.MoveNext())
            {
                Hit    hit         = (Hit)i.Current;
                string fingerprint = hit.Get("fingerprint");
                fingerprints.Add(fingerprint);
            }

            // Close the index
            index_searcher.Close();
            index_reader.Close();

            return(fingerprints);
        }
コード例 #2
0
        public List <string> GetDocumentsSimilarToDocument(string document_filename)
        {
            List <string> fingerprints = new List <string>();

            try
            {
                using (IndexReader index_reader = IndexReader.Open(LIBRARY_INDEX_BASE_PATH, true))
                {
                    using (IndexSearcher index_searcher = new IndexSearcher(index_reader))
                    {
                        LuceneMoreLikeThis mlt = new LuceneMoreLikeThis(index_reader);
                        mlt.SetFieldNames(new string[] { "content" });
                        mlt.SetMinTermFreq(0);

                        Query query = mlt.Like(new StreamReader(document_filename));
                        Hits  hits  = index_searcher.Search(query);
                        var   i     = hits.Iterator();
                        while (i.MoveNext())
                        {
                            Hit    hit         = (Hit)i.Current;
                            string fingerprint = hit.Get("fingerprint");
                            fingerprints.Add(fingerprint);
                        }

                        // Close the index
                        index_searcher.Close();
                    }
                    index_reader.Close();
                }
            }
            catch (Exception ex)
            {
                Logging.Warn(ex, "GetDocumentsSimilarToDocument: There was a problem opening the index file for searching.");
            }

            return(fingerprints);
        }