Beispiel #1
0
        /// <summary>
        /// 根据 path 路径获取对应的索引目录缓存
        /// </summary>
        /// <param name="path"></param>
        /// <returns></returns>
        public static LuceneAddIn.Search.IndexSearcher Get(string path)
        {
            LuceneAddIn.Search.IndexSearcher searcher = null;

            // 如果不在缓存中,尝试读取进缓存
            IIndexDirectory dir = IndexDirectoryCache.Get(path);
            if (dir == null && System.IO.Directory.Exists(path))
            {
                try
                {
                    LuceneAddIn.Store.FSDirectory directory = LuceneAddIn.Store.MMapDirectory.Open(new System.IO.DirectoryInfo(path));
                    dir = new LuceneDirectory(path, false) { Directory = directory };
                    IndexDirectoryCache.Set(dir);
                    LuceneSearcherManager.Set(dir as LuceneDirectory);
                }
                catch { }
            }

            lock (Locker)
            {
                if (SearcherCache.ContainsKey(path))
                {
                    searcher = SearcherCache[path] ;
                }
            }
            return searcher;
        }
Beispiel #2
0
 /// <summary>
 /// 设置一批搜索器进缓存
 /// </summary>
 /// <param name="dirs"></param>
 public static void SetRange(LuceneDirectory[] dirs)
 {
     if (dirs != null && dirs.Length != 0)
     {
         foreach (LuceneDirectory dir in dirs)
         {
             Set(dir);
         }
     }
 }
Beispiel #3
0
 /// <summary>
 /// 设置缓存
 /// </summary>
 /// <param name="dir"></param>
 public static void Set(LuceneDirectory dir)
 {
     lock (Locker)
     {
         SearcherCache[dir.IndexPath] = new LuceneAddIn.Search.IndexSearcher(dir.Directory, true);
     }
 }