Beispiel #1
0
        public IDictionary <string, Tuple <string, bool> > GetAllGenres(string startsWith)
        {
            const string field = "genre";

            using (var directory = new SimpleFSDirectory(new DirectoryInfo(Settings.Instance.DatabaseIndex)))
                using (var reader = IndexReader.Open(directory, true)) {
                    var result = new SortedDictionary <string, Tuple <string, bool> >();
                    var terms  = reader.Terms(new Term(field));

                    while (terms.Next())
                    {
                        var term = terms.Term;
                        if (term.Field == field && term.Text.StartsWith(startsWith))
                        {
                            var name        = GenreExtensions.Cut(term.Text, startsWith);
                            var displayName = GenreExtensions.GetNthName(name, 0);
                            var fullName    = GenreExtensions.Combine(startsWith, displayName);
                            var isLast      = GenreExtensions.IsLast(name);

                            result[displayName] = new Tuple <string, bool>(fullName, isLast);
                        }
                    }

                    return(result);
                }
        }