diff --git a/Wenli.Search.Demo/Program.cs b/Wenli.Search.Demo/Program.cs new file mode 100644 index 0000000..7cb3258 --- /dev/null +++ b/Wenli.Search.Demo/Program.cs @@ -0,0 +1,121 @@ +using System; +using System.Collections.Generic; +using System.Diagnostics; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Wenli.Search.Interface; +using Wenli.Search.Model; + +namespace Wenli.Search.Demo +{ + class Program + { + static void Main(string[] args) + { + + Console.Title = "Wenli.Search test"; + + Console.WriteLine("Wenli.Search test" + Environment.NewLine); + + + while (true) + { + #region 分词测试 + Console.WriteLine("回车开始分词测试"); + Console.ReadLine(); + + string str = "当一个资源从与该资源本身所在的服务器的域或端口不同的域或不同的端口请求一个资源时,浏览器会发起一个跨域 HTTP 请求。出于安全考虑,浏览器会限制从脚本内发起的跨域HTTP请求或者拦截了服务器返回内容。例如,XMLHttpRequest 和 Fetch 遵循同源策略。因此,使用 XMLHttpRequest或 Fetch 的Web应用程序只能将HTTP请求发送到其自己的域;这种安全机制是为避免出现类似CSRF 跨站攻击等问题。"; + + Console.WriteLine(str); + + Console.WriteLine("分词结果如下:"); + Console.WriteLine("============================================"); + + + var segs = SeachHelper.Segment(str); + + foreach (var item in segs) + { + Console.WriteLine(item); + } + + Console.WriteLine("============================================"); + #endregion + + #region 索引测试 + Console.WriteLine("分词测试完成,按回车进入索引测试"); + Console.ReadLine(); + Console.WriteLine("============================================"); + SeachHelper.CleanIndex(); + + var list = new List(); + + list.Add(new SearchData(Guid.NewGuid().ToString("N"), "javascript之ProtoBuf在websocket中的使用", "摘要: 因为ProtoBuf的序列化效率和大小都非常好,所以它在网络通信上面应用越来越多;而webosocket也随着web3.0应用越来越广泛,而将这两个结合在一起的也会慢慢形成一种趋势;本人是为了测试自已写的一个C# websocket,所以在web上面结合pb也写了一个js实例: 1.首先下载prot阅读全文", "protobuf, pb, websocket, javascript protobuf, js protobuf", "http://www.cnblogs.com/yswenli/p/7099809.html", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff"))); + + list.Add(new SearchData(Guid.NewGuid().ToString("N"), "跨域CORS", "摘要: 一、跨域CORS是什么 当一个资源从与该资源本身所在的服务器的域或端口不同的域或不同的端口请求一个资源时,浏览器会发起一个跨域 HTTP 请求。出于安全考虑,浏览器会限制从脚本内发起的跨域HTTP请求或者拦截了服务器返回内容。例如,XMLHttpRequest 和 Fetch 遵循同源策略。因此,使阅读全文", "WCF跨域, 跨域, ajax跨域, CORS, js跨域", "http://www.cnblogs.com/yswenli/p/7053964.html", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff"))); + + list.Add(new SearchData(Guid.NewGuid().ToString("N"), "C# 输入法", "摘要: C# 输入法 虽说输入法不是什么新事物,各种语言版本都有,不过在C#不常见;这就会给人一种误会:C#不能做!其实C#能不能做呢,答案是肯定的——三种方式都行:IMM、TSF以及外挂式。IMM这种就是调windows的一些底层api,不过在新版本的windows中基本上已经不能用了,属于一种过时的操作阅读全文", "C# 输入法, 外挂输入法, 五笔输入法, 拼音输入法", "http://www.cnblogs.com/yswenli/p/6528447.html", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff"))); + + list.Add(new SearchData(Guid.NewGuid().ToString("N"), "C#如何使用ES", "摘要: Elasticsearch简介 Elasticsearch (ES)是一个基于Apache Lucene(TM)的开源搜索引擎,无论在开源还是专有领域,Lucene可以被认为是迄今为止最先进、性能最好的、功能最全的搜索引擎库。 但是,Lucene只是一个库。想要发挥其强大的作用,你需使用C#将其集成阅读全文", "C#, Elasticsearch, Full-text Search, 全文搜索, 搜索引擎, Distributed", "http://www.cnblogs.com/yswenli/p/6266569.html", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff"))); + + list.Add(new SearchData(Guid.NewGuid().ToString("N"), "redis成长之路", "摘要: 为什么使用redis Redis适合所有数据in-momory的场景,虽然Redis也提供持久化功能,但实际更多的是一个disk-backed的功能,跟传统意义上的持久化有比较大的差别,那么可能大家就会有疑问,似乎Redis更像一个加强版的Memcached. 上面描述说的过于泛了,很多初次接触的码阅读全文", "C#, Redis, StackExchange.Redis, Wenli.Drive.Redis", "http://www.cnblogs.com/yswenli/p/6235765.html", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff"))); + + SeachHelper.CreateIndex(list); + + Console.WriteLine("============================================"); + #endregion + + + + #region 查询测试 + Console.WriteLine("索引测试完成,按回车进入查询测试"); + Console.ReadLine(); + Console.WriteLine("============================================"); + + var result = SeachHelper.Search("摘要"); + + result.Data.ForEach((item) => + { + Console.WriteLine("id:{0} title:{1}", item.id, item.title); + + }); + Console.WriteLine("============================================"); + Console.WriteLine("搜索【摘要】完成,查询结果:{0} 条,按回车进入下次查询测试", result.Count); + Console.ReadLine(); + Console.WriteLine("============================================"); + + result = SeachHelper.Search("ES"); + + result.Data.ForEach((item) => + { + Console.WriteLine("id:{0} title:{1}", item.id, item.title); + + }); + Console.WriteLine("============================================"); + #endregion + + #region 多次查询测试 + Console.WriteLine("搜索【ES】完成,查询结果:{0} 条,按回车进入多次查询测试", result.Count); + Console.ReadLine(); + Console.WriteLine("============================================"); + Console.WriteLine("正在进行多项查询测试,请稍候..."); + + Stopwatch sw = new Stopwatch(); + sw.Start(); + + Parallel.For(0, 10000, (i) => + { + SeachHelper.Search("的"); + }); + Console.WriteLine("============================================"); + Console.WriteLine("10000次【的】查询测试已完成,用时:{0}", sw.Elapsed.ToString()); + sw.Stop(); + #endregion + Console.WriteLine("wenli.Search 测试完成"); + + } + + } + } +} diff --git a/Wenli.Search.Demo/Properties/AssemblyInfo.cs b/Wenli.Search.Demo/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..686f93b --- /dev/null +++ b/Wenli.Search.Demo/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// 有关程序集的一般信息由以下 +// 控制。更改这些特性值可修改 +// 与程序集关联的信息。 +[assembly: AssemblyTitle("Wenli.Search.Demo")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("Wenli.Search.Demo")] +[assembly: AssemblyCopyright("Copyright © 2017")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// 将 ComVisible 设置为 false 会使此程序集中的类型 +//对 COM 组件不可见。如果需要从 COM 访问此程序集中的类型 +//请将此类型的 ComVisible 特性设置为 true。 +[assembly: ComVisible(false)] + +// 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID +[assembly: Guid("df6778c6-14fc-47f2-a32a-d9daccc75c04")] + +// 程序集的版本信息由下列四个值组成: +// +// 主版本 +// 次版本 +// 生成号 +// 修订号 +// +// 可以指定所有值,也可以使用以下所示的 "*" 预置版本号和修订号 +// 方法是按如下所示使用“*”: : +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/Wenli.Search.Demo/Wenli.Search.Demo.csproj b/Wenli.Search.Demo/Wenli.Search.Demo.csproj new file mode 100644 index 0000000..e3a4259 --- /dev/null +++ b/Wenli.Search.Demo/Wenli.Search.Demo.csproj @@ -0,0 +1,76 @@ + + + + + Debug + AnyCPU + {DF6778C6-14FC-47F2-A32A-D9DACCC75C04} + Exe + Wenli.Search.Demo + Wenli.Search.Demo + v4.5 + 512 + + + + AnyCPU + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + false + + + AnyCPU + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + false + + + Wenli.Search.Demo.Program + + + + False + bin\Debug\Lucene.Net.dll + + + False + bin\Debug\PanGu.dll + + + False + bin\Debug\PanGu.HighLight.dll + + + False + bin\Debug\PanGu.Lucene.Analyzer.dll + + + + + + + + + + False + bin\Debug\Wenli.Search.dll + + + + + + + + + + + \ No newline at end of file diff --git a/Wenli.Search.Demo/Wenli.Search.Demo.csproj.user b/Wenli.Search.Demo/Wenli.Search.Demo.csproj.user new file mode 100644 index 0000000..944ec00 --- /dev/null +++ b/Wenli.Search.Demo/Wenli.Search.Demo.csproj.user @@ -0,0 +1,6 @@ + + + + ShowAllFiles + + \ No newline at end of file diff --git a/Wenli.Search.Demo/app.config b/Wenli.Search.Demo/app.config new file mode 100644 index 0000000..a587186 --- /dev/null +++ b/Wenli.Search.Demo/app.config @@ -0,0 +1,10 @@ + + + +
+ + + + + + diff --git a/Wenli.Search.Demo/bin/Debug/Lucene.Net.dll b/Wenli.Search.Demo/bin/Debug/Lucene.Net.dll new file mode 100644 index 0000000..713ba19 Binary files /dev/null and b/Wenli.Search.Demo/bin/Debug/Lucene.Net.dll differ diff --git a/Wenli.Search.Demo/bin/Debug/PanGu.HighLight.dll b/Wenli.Search.Demo/bin/Debug/PanGu.HighLight.dll new file mode 100644 index 0000000..0376ac7 Binary files /dev/null and b/Wenli.Search.Demo/bin/Debug/PanGu.HighLight.dll differ diff --git a/Wenli.Search.Demo/bin/Debug/PanGu.Lucene.Analyzer.dll b/Wenli.Search.Demo/bin/Debug/PanGu.Lucene.Analyzer.dll new file mode 100644 index 0000000..571ec7b Binary files /dev/null and b/Wenli.Search.Demo/bin/Debug/PanGu.Lucene.Analyzer.dll differ diff --git a/Wenli.Search.Demo/bin/Debug/PanGu.dll b/Wenli.Search.Demo/bin/Debug/PanGu.dll new file mode 100644 index 0000000..de3aa24 Binary files /dev/null and b/Wenli.Search.Demo/bin/Debug/PanGu.dll differ diff --git a/Wenli.Search.Demo/bin/Debug/SearchIndex/_h.cfs b/Wenli.Search.Demo/bin/Debug/SearchIndex/_h.cfs new file mode 100644 index 0000000..bee9fe1 Binary files /dev/null and b/Wenli.Search.Demo/bin/Debug/SearchIndex/_h.cfs differ diff --git a/Wenli.Search.Demo/bin/Debug/SearchIndex/_h.cfx b/Wenli.Search.Demo/bin/Debug/SearchIndex/_h.cfx new file mode 100644 index 0000000..569ea13 Binary files /dev/null and b/Wenli.Search.Demo/bin/Debug/SearchIndex/_h.cfx differ diff --git a/Wenli.Search.Demo/bin/Debug/SearchIndex/segments.gen b/Wenli.Search.Demo/bin/Debug/SearchIndex/segments.gen new file mode 100644 index 0000000..bed80c0 Binary files /dev/null and b/Wenli.Search.Demo/bin/Debug/SearchIndex/segments.gen differ diff --git a/Wenli.Search.Demo/bin/Debug/SearchIndex/segments_11 b/Wenli.Search.Demo/bin/Debug/SearchIndex/segments_11 new file mode 100644 index 0000000..cca8949 Binary files /dev/null and b/Wenli.Search.Demo/bin/Debug/SearchIndex/segments_11 differ diff --git a/Wenli.Search.Demo/bin/Debug/Wenli.Search.Demo.exe b/Wenli.Search.Demo/bin/Debug/Wenli.Search.Demo.exe new file mode 100644 index 0000000..a7d3696 Binary files /dev/null and b/Wenli.Search.Demo/bin/Debug/Wenli.Search.Demo.exe differ diff --git a/Wenli.Search.Demo/bin/Debug/Wenli.Search.Demo.exe.config b/Wenli.Search.Demo/bin/Debug/Wenli.Search.Demo.exe.config new file mode 100644 index 0000000..a587186 --- /dev/null +++ b/Wenli.Search.Demo/bin/Debug/Wenli.Search.Demo.exe.config @@ -0,0 +1,10 @@ + + + +
+ + + + + + diff --git a/Wenli.Search.Demo/bin/Debug/Wenli.Search.Demo.pdb b/Wenli.Search.Demo/bin/Debug/Wenli.Search.Demo.pdb new file mode 100644 index 0000000..1368637 Binary files /dev/null and b/Wenli.Search.Demo/bin/Debug/Wenli.Search.Demo.pdb differ diff --git a/Wenli.Search.Demo/bin/Debug/Wenli.Search.Demo.vshost.exe b/Wenli.Search.Demo/bin/Debug/Wenli.Search.Demo.vshost.exe new file mode 100644 index 0000000..8f90da4 Binary files /dev/null and b/Wenli.Search.Demo/bin/Debug/Wenli.Search.Demo.vshost.exe differ diff --git a/Wenli.Search.Demo/bin/Debug/Wenli.Search.Demo.vshost.exe.config b/Wenli.Search.Demo/bin/Debug/Wenli.Search.Demo.vshost.exe.config new file mode 100644 index 0000000..2ce76f1 --- /dev/null +++ b/Wenli.Search.Demo/bin/Debug/Wenli.Search.Demo.vshost.exe.config @@ -0,0 +1,58 @@ + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Wenli.Search.Demo/bin/Debug/Wenli.Search.Demo.vshost.exe.manifest b/Wenli.Search.Demo/bin/Debug/Wenli.Search.Demo.vshost.exe.manifest new file mode 100644 index 0000000..061c9ca --- /dev/null +++ b/Wenli.Search.Demo/bin/Debug/Wenli.Search.Demo.vshost.exe.manifest @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/Wenli.Search.Demo/bin/Debug/Wenli.Search.dll b/Wenli.Search.Demo/bin/Debug/Wenli.Search.dll new file mode 100644 index 0000000..097996b Binary files /dev/null and b/Wenli.Search.Demo/bin/Debug/Wenli.Search.dll differ diff --git a/Wenli.Search.Demo/obj/Debug/CoreCompileInputs.cache b/Wenli.Search.Demo/obj/Debug/CoreCompileInputs.cache new file mode 100644 index 0000000..8737f3d --- /dev/null +++ b/Wenli.Search.Demo/obj/Debug/CoreCompileInputs.cache @@ -0,0 +1 @@ +0eb8465fd2e53228b68096a227cdeb0670db9d7f diff --git a/Wenli.Search.Demo/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache b/Wenli.Search.Demo/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache new file mode 100644 index 0000000..fd016b6 Binary files /dev/null and b/Wenli.Search.Demo/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache differ diff --git a/Wenli.Search.Demo/obj/Debug/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs b/Wenli.Search.Demo/obj/Debug/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs new file mode 100644 index 0000000..e69de29 diff --git a/Wenli.Search.Demo/obj/Debug/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs b/Wenli.Search.Demo/obj/Debug/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs new file mode 100644 index 0000000..e69de29 diff --git a/Wenli.Search.Demo/obj/Debug/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs b/Wenli.Search.Demo/obj/Debug/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs new file mode 100644 index 0000000..e69de29 diff --git a/Wenli.Search.Demo/obj/Debug/Wenli.Search.Demo.csproj.FileListAbsolute.txt b/Wenli.Search.Demo/obj/Debug/Wenli.Search.Demo.csproj.FileListAbsolute.txt new file mode 100644 index 0000000..5c1e750 --- /dev/null +++ b/Wenli.Search.Demo/obj/Debug/Wenli.Search.Demo.csproj.FileListAbsolute.txt @@ -0,0 +1,19 @@ +E:\百度云\Develop\案例\全文搜索\Wenli.Search\Wenli.Search.Demo\bin\Debug\Wenli.Search.Demo.exe.config +E:\百度云\Develop\案例\全文搜索\Wenli.Search\Wenli.Search.Demo\bin\Debug\Wenli.Search.Demo.exe +E:\百度云\Develop\案例\全文搜索\Wenli.Search\Wenli.Search.Demo\bin\Debug\Wenli.Search.Demo.pdb +E:\百度云\Develop\案例\全文搜索\Wenli.Search\Wenli.Search.Demo\bin\Debug\Wenli.Search.dll +E:\百度云\Develop\案例\全文搜索\Wenli.Search\Wenli.Search.Demo\bin\Debug\Lucene.Net.dll +E:\百度云\Develop\案例\全文搜索\Wenli.Search\Wenli.Search.Demo\bin\Debug\PanGu.HighLight.dll +E:\百度云\Develop\案例\全文搜索\Wenli.Search\Wenli.Search.Demo\bin\Debug\PanGu.Lucene.Analyzer.dll +E:\百度云\Develop\案例\全文搜索\Wenli.Search\Wenli.Search.Demo\bin\Debug\PanGu.dll +E:\百度云\Develop\案例\全文搜索\Wenli.Search\Wenli.Search.Demo\bin\Debug\Wenli.Search.pdb +E:\百度云\Develop\案例\全文搜索\Wenli.Search\Wenli.Search.Demo\bin\Debug\Lucene.Net.xml +E:\百度云\Develop\案例\全文搜索\Wenli.Search\Wenli.Search.Demo\bin\Debug\PanGu.xml +E:\百度云\Develop\案例\全文搜索\Wenli.Search\Wenli.Search.Demo\obj\Debug\Wenli.Search.Demo.csprojResolveAssemblyReference.cache +E:\百度云\Develop\案例\全文搜索\Wenli.Search\Wenli.Search.Demo\obj\Debug\Wenli.Search.Demo.exe +E:\百度云\Develop\案例\全文搜索\Wenli.Search\Wenli.Search.Demo\obj\Debug\Wenli.Search.Demo.pdb +C:\Users\Administrator\Documents\GitHub\Wenli.Search\Wenli.Search.Demo\bin\Debug\Wenli.Search.Demo.exe.config +C:\Users\Administrator\Documents\GitHub\Wenli.Search\Wenli.Search.Demo\obj\Debug\Wenli.Search.Demo.exe +C:\Users\Administrator\Documents\GitHub\Wenli.Search\Wenli.Search.Demo\obj\Debug\Wenli.Search.Demo.pdb +C:\Users\Administrator\Documents\GitHub\Wenli.Search\Wenli.Search.Demo\bin\Debug\Wenli.Search.Demo.exe +C:\Users\Administrator\Documents\GitHub\Wenli.Search\Wenli.Search.Demo\bin\Debug\Wenli.Search.Demo.pdb diff --git a/Wenli.Search.Demo/obj/Debug/Wenli.Search.Demo.exe b/Wenli.Search.Demo/obj/Debug/Wenli.Search.Demo.exe new file mode 100644 index 0000000..a7d3696 Binary files /dev/null and b/Wenli.Search.Demo/obj/Debug/Wenli.Search.Demo.exe differ diff --git a/Wenli.Search.Demo/obj/Debug/Wenli.Search.Demo.pdb b/Wenli.Search.Demo/obj/Debug/Wenli.Search.Demo.pdb new file mode 100644 index 0000000..1368637 Binary files /dev/null and b/Wenli.Search.Demo/obj/Debug/Wenli.Search.Demo.pdb differ diff --git a/Wenli.Search.sln b/Wenli.Search.sln new file mode 100644 index 0000000..3b27b49 --- /dev/null +++ b/Wenli.Search.sln @@ -0,0 +1,22 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 14 +VisualStudioVersion = 14.0.25420.1 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Wenli.Search.Demo", "Wenli.Search.Demo\Wenli.Search.Demo.csproj", "{DF6778C6-14FC-47F2-A32A-D9DACCC75C04}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {DF6778C6-14FC-47F2-A32A-D9DACCC75C04}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {DF6778C6-14FC-47F2-A32A-D9DACCC75C04}.Debug|Any CPU.Build.0 = Debug|Any CPU + {DF6778C6-14FC-47F2-A32A-D9DACCC75C04}.Release|Any CPU.ActiveCfg = Release|Any CPU + {DF6778C6-14FC-47F2-A32A-D9DACCC75C04}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal