Переглянути джерело

修正分析器的线程安全问题

懒得勤快 6 роки тому
батько
коміт
2df63e6604

+ 2 - 2
Masuit.LuceneEFCore.SearchEngine/Extensions/ServiceCollectionExtension.cs

@@ -21,8 +21,8 @@ namespace Masuit.LuceneEFCore.SearchEngine.Extensions
         {
             services.AddSingleton(s => option);
             services.AddMemoryCache();
-            services.TryAddTransient<Directory>(s => FSDirectory.Open(option.Path));
-            services.TryAddTransient<Analyzer>(s => new JieBaAnalyzer(TokenizerMode.Search));
+            services.TryAddSingleton<Directory>(s => FSDirectory.Open(option.Path));
+            services.TryAddSingleton<Analyzer>(s => new JieBaAnalyzer(TokenizerMode.Search));
             services.TryAddTransient<ILuceneIndexer, LuceneIndexer>();
             services.TryAddTransient<ILuceneIndexSearcher, LuceneIndexSearcher>();
             services.TryAddTransient(typeof(ISearchEngine<>), typeof(SearchEngine<>));

+ 3 - 2
Masuit.LuceneEFCore.SearchEngine/LuceneIndexSearcher.cs

@@ -22,8 +22,8 @@ namespace Masuit.LuceneEFCore.SearchEngine
 {
     public class LuceneIndexSearcher : ILuceneIndexSearcher
     {
-        private static Directory _directory;
-        private static Analyzer _analyzer;
+        private readonly Directory _directory;
+        private readonly Analyzer _analyzer;
         private readonly IMemoryCache _memoryCache;
 
         private static readonly HttpClient HttpClient = new HttpClient()
@@ -36,6 +36,7 @@ namespace Masuit.LuceneEFCore.SearchEngine
         /// </summary>
         /// <param name="directory">索引目录</param>
         /// <param name="analyzer">索引分析器</param>
+        /// <param name="memoryCache">内存缓存</param>
         public LuceneIndexSearcher(Directory directory, Analyzer analyzer, IMemoryCache memoryCache)
         {
             _directory = directory;