Inheritance: SearchComponentBase
Example #1
0
        public static IEnumerable<TextValue> GetAllValuesAsListDistinct(List<Metadata> metadataList)
        {
            List<TextValue> l = new List<TextValue>();

            // gehe alle Metadaten druch
            foreach (Metadata m in metadataList)
            {
                // gehe alle Values in Metadata durch
                foreach (string s in (m.GetAllValuesAsList()))
                {

                    //split strings to single words
                    Array a = s.Split(new Char[] { ' ' });
                    if (a.Length > 1)
                    {
                        foreach (string astring in a)
                        {
                            bool isIn = false;
                            // prüfe ob string schon in List
                            foreach (TextValue s2 in l)
                            {
                                if (astring == s2.Value) isIn = true;
                            }

                            if (isIn == false) {
                                //jedes wort wird eingefügt
                                TextValue tv = new TextValue();
                                tv.Name = astring;
                                tv.Value = astring;
                                l.Add(tv);

                            };
                            //kompletter string wird eingefügt

                        }

                    }

                       bool isInList = false;
                       // prüfe ob string schon in List
                       foreach (TextValue s2 in l)
                       {
                           if (s == s2.Value) isInList = true;
                       }

                       if (isInList == false) {
                           TextValue tv = new TextValue();
                           tv.Name = s;
                           tv.Value = s;
                           l.Add(tv);

                       }

                }
            }

            return l;
        }
Example #2
0
        /// <summary>
        /// 
        /// </summary>
        /// <remarks></remarks>
        /// <seealso cref=""/>
        /// <param name="origQuery"></param>
        /// <param name="queryFilter"></param>
        /// <param name="searchtext"></param>
        /// <returns></returns>
        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;
        }
Example #3
0
        public static IEnumerable<TextValue> GetAllTextValuesByNodeDistinct(string nodeName, List<Metadata> metadataList)
        {
            List<TextValue> l = new List<TextValue>();

            foreach (Metadata m in metadataList)
            {
                foreach (XmlNode x in m.GetValueFromNode(nodeName))
                {
                    bool isIn = false;
                    foreach (TextValue s in l)
                    {
                        if (x.InnerText == s.Value) isIn = true;
                    }

                    if(isIn == false){
                        TextValue tv = new TextValue();
                        tv.Name = x.InnerText;
                        tv.Value=x.InnerText;
                        l.Add(tv);
                    };
                    //l.Add(x.InnerText);
                }
            }

            return l;
        }