public List <SearchDoc> searchfield(string textSearch)
        {
            List <SearchDoc> list = new List <SearchDoc>();

            using (Analyzer analyzer = new StandardAnalyzer(Version.LUCENE_48))
            {
                var queryParser = new QueryParser(Version.LUCENE_48, "FullText", analyzer);

                queryParser.AllowLeadingWildcard = true;

                var  query = queryParser.Parse(textSearch);
                Sort sort  = new Sort(SortField.FIELD_SCORE);

                var matches = Searcher.Search(query, null, 100, sort, true, true).ScoreDocs;
                matches.OrderBy(de => de.Score);

                foreach (var item in matches)
                {
                    var id  = item.Doc;
                    var doc = Searcher.Doc(id);

                    SearchDoc searchDoc = new SearchDoc();

                    searchDoc.id    = doc.Get("Id");
                    searchDoc.Name  = doc.GetField("Name").GetStringValue();
                    searchDoc.Path  = doc.GetField("Path").GetStringValue();
                    searchDoc.Desc1 = doc.GetField("Desc1").GetStringValue();
                    list.Add(searchDoc);
                }
            }
            return(list);
        }
Beispiel #2
0
        public List <SearchDoc> searchfield(string textSearch)
        {
            //var table = Sample.Clone();

            //  var directory = FSDirectory.Open(
            //                  AppDomain.CurrentDomain.BaseDirectory + @"\App_Data\LuceneIndexes"
            //               );
            //IndexSearcher searcher = new IndexSearcher(directory);

            //IndexReader indexReader = IndexReader.Open(directory, true);
            //Searcher indexSearch = new IndexSearcher(indexReader);

            List <SearchDoc> list = new List <SearchDoc>();


            // using (var reader = DirectoryReader.Open(Directory))
            // {
            //IndexSearcher searcher = new IndexSearcher(Reader);

            using (Analyzer analyzer = new StandardAnalyzer(Version.LUCENE_48))
            {
                var queryParser = new QueryParser(Version.LUCENE_48, "FullText", analyzer);

                queryParser.AllowLeadingWildcard = true;

                var query = queryParser.Parse(textSearch);
                //var query=queryParser.Parse("FullText:"+textSearch);
                //var query = new TermQuery(new Term("FullText", textSearch));
                //SortField sortField = new SortField("FullText",SortFieldType.STRING);
                Sort sort = new Sort(SortField.FIELD_SCORE);


                // var collector = TopScoreDocCollector.Create(1000,true);
                // searcher.Search(query,collector);
                // searcher.Search(query,10,sort);

                //var matches = collector.GetTopDocs(0,30).ScoreDocs;

                var matches = Searcher.Search(query, null, 100, sort, true, true).ScoreDocs;
                matches.OrderBy(de => de.Score);

                //     #region  Test
                //     Stopwatch timer=new Stopwatch();
                //     timer.Start();
                //      TermQuery query1 = new TermQuery(new Term("FullText",textSearch));
                //    ScoreDoc[] hits = Searcher.Search(query1, 400).ScoreDocs;
                //     if (hits.Length > 0) {
                //         for (int i = 0; i < hits.Length; i++)
                //         {
                //             Document hitDoc = Searcher.Doc(hits[i].Doc);
                //             string c=hitDoc.Get("Id");
                //         }
                //     }
                //     timer.Stop();
                //     TimeSpan ts = timer.Elapsed;

                //    string b=ts.Seconds.ToString();
                //     #endregion


                foreach (var item in matches)
                {
                    var id  = item.Doc;
                    var doc = Searcher.Doc(id);
                    //var d=doc.GetField("Name").ToString();

                    SearchDoc searchDoc = new SearchDoc();

                    searchDoc.id   = doc.Get("Id");
                    searchDoc.Name = doc.GetField("Name").GetStringValue();
                    //searchDoc.Desc2=doc.GetField("Desc2").GetStringValue();
                    searchDoc.Path  = doc.GetField("Path").GetStringValue();
                    searchDoc.Desc1 = doc.GetField("Desc1").GetStringValue();


                    list.Add(searchDoc);
                    //string name=
                    //string Desc2=doc.GetField("Desc2").ToString();
                    // doc.GetField("Name").GetStringValue;
                    // row["LastName"] = doc.GetField("Desc2").GetStringValue;
                    // row["JobTitle"] = doc.GetField("Path").GetStringValue;
                    // row["JobTitle"] = doc.GetField("JobTitle").GetStringValue;
                    // row["BirthDate"] = doc.GetField("BirthDate").GetStringValue;
                    // row["ID"] = doc.GetField("ID").GetStringValue;
                }
            }

            //}

            return(list);
        }