浏览代码

Merge branch 'master' of https://github.com/ldqk/Masuit.LuceneEFCore.SearchEngine

懒得勤快 3 年之前
父节点
当前提交
953dc63c24
共有 1 个文件被更改,包括 20 次插入2 次删除
  1. 20 2
      README.md

+ 20 - 2
README.md

@@ -1,6 +1,6 @@
 ### 基于EntityFrameworkCore和Lucene.NET实现的全文检索搜索引擎
  <a href="https://gitee.com/masuit/Masuit.LuceneEFCore.SearchEngine"><img src="https://gitee.com/static/images/logo-black.svg" height="32"></a> <a href="https://github.com/ldqk/Masuit.LuceneEFCore.SearchEngine"><img src="https://upload.wikimedia.org/wikipedia/commons/thumb/9/95/Font_Awesome_5_brands_github.svg/54px-Font_Awesome_5_brands_github.svg.png" height="36"><img src="https://upload.wikimedia.org/wikipedia/commons/thumb/2/29/GitHub_logo_2013.svg/128px-GitHub_logo_2013.svg.png" height="28"></a>  
-**仅100KB的代码量!** 基于EntityFrameworkCore和Lucene.NET实现的全文检索搜索引擎,可轻松实现高性能的全文检索。可以轻松应用于任何基于EntityFrameworkCore的实体框架数据库。  
+**仅100KB的代码量!** 基于EntityFrameworkCore和Lucene.NET实现的全文检索搜索引擎,可轻松实现高性能的全文检索,支持添加自定义词库,自定义同义词和同音词,搜索分词默认支持同音词搜索。可以轻松应用于任何基于EntityFrameworkCore的实体框架数据库。  
 **`注意:该项目仅适用于单体项目,不适用于分布式应用,分布式应用请考虑使用大型的搜索引擎中间件做支撑,如:ElasticSearch`**
 
 [官网页面](http://masuit.com/1437) | [实际应用案例体验](https://masuit.com/s?wd=会声会影+TeamViewer)
@@ -16,6 +16,12 @@
 ## Stargazers over time  
 <img src="https://starchart.cc/ldqk/Masuit.LuceneEFCore.SearchEngine.svg">    
 
+### 项目特点  
+1. 基于原生Lucene实现,轻量高效,毫秒级响应  
+2. 与EFCore无缝接入,配置代码少,可轻松接入现有项目  
+3. 支持添加自定义词库,支持同义词和同音词检索,支持添加自定义同义词和同音词  
+4. 不支持分布式应用,若你能解决分布式场景中索引库的同步问题,可以选择  
+
 ### 为什么没有集成到Masuit.Tools这个库?
 因为这个项目又引入了几个Lucene相关的库,如果集成到[Masuit.Tools](https://github.com/ldqk/Masuit.Tools "Masuit.Tools"),这必将给原来的项目增加了更多的引用包,使用过程中也有可能没有使用Lucene的场景,这就造成了项目更加的臃肿,所以做了个新的项目。
 ### 为什么有这个库?现成的ElasticSearch不好么?
@@ -147,7 +153,7 @@ public abstract class LuceneIndexableBaseEntity : ILuceneIndexable
 }
 ```
 实体继承自LuceneIndexableBaseEntity后,方便封装的Lucene可以直接调用ToDocument方法进行存储,同时,主键Id和IndexId需要参与Lucene索引文档的唯一标识(但IndexId不会生成到数据库)。
-#### 搜索引擎配置
+#### 搜索引擎配置、创建索引、导入自定义词库等
 Startup.cs
 ```csharp
 public void ConfigureServices(IServiceCollection services)
@@ -171,6 +177,17 @@ public void Configure(IApplicationBuilder app, IHostingEnvironment env, ISearchE
     string lucenePath = Path.Combine(env.ContentRootPath, luceneIndexerOptions.Path);
     if (!Directory.Exists(lucenePath) || Directory.GetFiles(lucenePath).Length < 1)
     {
+        // 导入自定义词库
+        KeywordsManager.AddWords("男娼起义");
+        KeywordsManager.AddWords("阳物运动");
+        KeywordsManager.AddWords("弟大勿勃");
+        
+        // 导入自定义同义词
+        KeywordsManager.AddSynonyms("地大物博","弟大勿勃");
+        KeywordsManager.AddSynonyms("难上加难","男上夹男");
+        KeywordsManager.AddSynonyms("小心地滑","小心弟滑");
+        
+        // 创建索引
         Console.WriteLine("索引库不存在,开始自动创建Lucene索引库...");
         searchEngine.CreateIndex(new List<string>()
         {
@@ -184,6 +201,7 @@ public void Configure(IApplicationBuilder app, IHostingEnvironment env, ISearchE
 }
 
 ```
+**同义词支持正向和反向查找,如配置了:`KeywordsManager.AddSynonyms("地大物博","弟大勿勃")`和`KeywordsManager.AddSynonyms("弟大勿勃","地大物博")`是等效的,只需要其中一条即可**  
 HomeController.cs
 ```csharp
 [Route("[controller]/[action]")]