BExIS.Ddm.Providers.LuceneProvider.Searcher.BexisIndexSearcher.doTextSearch C# (CSharp) 메소드

doTextSearch() 공개 정적인 메소드

public static doTextSearch ( Query origQuery, String queryFilter, String searchtext ) : IEnumerable
origQuery Lucene.Net.Search.Query
queryFilter String
searchtext String
리턴 IEnumerable
        public static IEnumerable<TextValue> doTextSearch(Query origQuery, String queryFilter, String searchtext)
        {
            String filter = queryFilter;
            BooleanQuery query = new BooleanQuery();
            query.Add(origQuery, Occur.MUST);
            if (!filter.ToLower().StartsWith("ng_"))
            {
                filter = "ng_" + filter;
            }
            if (filter.ToLower().Equals("ng_all"))
            {
                filter = "ng_all";
                queryFilter = "ng_all";
            }
            HashSet<string> uniqueText = new HashSet<string>();
            searchtext = searchtext.ToLower();
            QueryParser parser = new QueryParser(Lucene.Net.Util.Version.LUCENE_30, filter, new KeywordAnalyzer());
            parser.DefaultOperator = QueryParser.Operator.AND;
            Query X1 = parser.Parse(searchtext);
            query.Add(X1, Occur.MUST);
            // Query query = parser.Parse("tree data");
            TopDocs tds = searcher.Search(query, 50);
            QueryScorer scorer = new QueryScorer(query, searchtext);
            Analyzer analyzer = new NGramAnalyzer();
            List<TextValue> autoCompleteTextList = new List<TextValue>();
            foreach (ScoreDoc sd in tds.ScoreDocs)
            {
                Document doc = searcher.Doc(sd.Doc);
                String docId = doc.GetField("doc_id").StringValue;
                TermQuery q1 = new TermQuery(new Term("id", docId.ToLower()));
                TermQuery q0 = new TermQuery(new Term("field", queryFilter.ToLower()));
                QueryParser parser1 = new QueryParser(Lucene.Net.Util.Version.LUCENE_30, "value", new KeywordAnalyzer());
                parser1.DefaultOperator = QueryParser.Operator.AND;
                Query q2 = parser1.Parse(searchtext);
                BooleanQuery q3 = new BooleanQuery();
                q3.Add(q1, Occur.MUST);
                q3.Add(q2, Occur.MUST);
                q3.Add(q0, Occur.MUST);
                TopDocs tdAutoComp = autoCompleteSearcher.Search(q3, 100);
                foreach (ScoreDoc sdAutoComp in tdAutoComp.ScoreDocs)
                {
                    Document docAutoComp = autoCompleteSearcher.Doc(sdAutoComp.Doc);
                    String toAdd = docAutoComp.GetField("value").StringValue;
                    if (!uniqueText.Contains(toAdd))
                    {
                        TextValue tv = new TextValue();
                        tv.Name = toAdd;
                        tv.Value = toAdd;
                        autoCompleteTextList.Add(tv);
                        uniqueText.Add(toAdd);
                    }
                }

                if (autoCompleteTextList.Count > 7) break;
            }
            return autoCompleteTextList;
        }