分类: 程序开发

MongoDB实现基于关键词的文章检索功能(C#)

我的实现目标是: 可以通过一个或多个关键词搜索到文章。 可以通过文章的关键词列表查询到其相关文章。 查询到的结果依据相关程度降序排列。 查询速度要够快。(理论上关键词检索比全文检索要快很多的) 在网上找了一大圈,就没有一个靠谱的方法,基本都是只能传入单词来检索,而且基本都没有提供C#驱动版本的代码,于是乎自己研究出了这个实现方案: 首先要求使用标签、分词、关键词提取组件对文章对应的关键词进行提取,然后作为数组格式,存入文章的Keywords字段中。 核心检索代码: /// <summary> /// 根据关键词获取文章编号与标题映射。 /// 注意:此方法会返回最为匹配的若干个项目,并根据匹配程度降序排列,即使是没有任何关键词匹配项,也会返回若干个结果的。 /// 另需注意:如果是根据文章关键词来查询,一般来说其中一定包含原文章,所以应该把期望获得的数量加1,并在结果中移除原文。 /// </summary> /// <param name=”limitNum”>数量上限</param> /// <param name=”keywo...

更多

Cache.Add vs Cache.Insert

ASP.Net中Cache对象的两个方法的差异对比。 分享或转载本博客站点内的所有原创内容时,都必须遵循此协议: 姓名标示-非商业性-相同方式分享 4.0 国际 (CC BY-NC-SA 4.0) 同时必须附加指向本文页面或本博客首页的超链接。 除此之外的转载、分享方式都必须征得本博客作者的授权,否则将会诉诸法律。

更多

在 Win10 UWP APP 项目中移除英文语言

本文以以 Windows 10 平台的 HTML+Javascript 项目为例。 在package.appxmanifest文件的设计器中设置默认语言为中文(此处为繁体中文): 这事如果直接编译打包提交的话,你会看到程序包信息中语言里仍然有英文: 并且此时仍然强迫你提交英文版的说明及截图,而如果你没做英文语言内容的话是无论如何也不会让你成功发布的。 此时应把“WinJS/js/en-US”目录删除,然后再编译发布,这样就成功剔除了英文语言,上传后就只有中文了: 起初我还尝试过同时修改Package.StoreAssociation.xml中的en-US相关的代码,但是这个文件修改起来好像没什么意义,只要一打包,它就恢复原来的状态了。 分享或转载本博客站点内的所有原创内容时,都必须遵循此协议: 姓名标示-非商业性-相同方式分享 4.0 国际 (CC BY-NC-SA 4.0) 同时必须附加指向本文页面或本博客首页的超链接。 除此之外的转载、分享方式都必须征得本博客作者的授权,否则将会诉诸法律。

更多

Android Studio 编译运行时遭遇 Failed to delete 异常的解决方法

众所周知,Android开发环境一直以BUG无数见长,从早期的Eclipse到今天的Android Studio,整个开发过程中很大一部分都是在跟IDE或SDK的各种恶心BUG作斗争。 此次遭遇的BUG内容提示通常如下: :app:transformClassesWithInstant+restartDexForDebug :app:transformClasses_enhancedWithInstant+reloadDexForDebug :app:incrementalDebugSupportDex :app:transformClassesWithDexForDebug FAILED Error:Execution failed for task ‘:app:transformClassesWithDexForDebug’. > java.io.IOException: Failed to delete C:UsersXMLDocumentsAndroidProjectMyAPPappbuildintermediatespre-dexeddebuginternal_impl...

更多

修改 Win10 UWP APP 的标题栏颜色 (Javascript WinJS)

使用Javascript开发Win10 UWP应用时,修改标题栏颜色的方法和C#中使用的方法近似,略有名称和颜色对象创建方面的区别: var titleBar = Windows.UI.ViewManagement.ApplicationView.getForCurrentView().titleBar; titleBar.inactiveBackgroundColor = titleBar.buttonBackgroundColor = titleBar.buttonInactiveBackgroundColor = titleBar.backgroundColor = { a: 255, b: 0, g: 196, r: 245 }; titleBar.buttonHoverBackgroundColor = { a: 255, b: 70, g: 210, r: 244 }; titleBar.buttonPressedBackgroundColor = { a: 255, b: 0, g: 160, r: 224 }; titleBar.foregroundColor = Wi...

更多

.Net实现Log4Net记录日志到MongoDB的源码分享

Log4Net是个很方便的日志记录工具,起初我是用txt形式记录日志的,这种方式简单、直接,非常方便。 但考虑到将来可能会有大量的日志,或者说还需要做一些日志查询功能,那么txt形式显然就不合适了。 于是就要考虑用数据库来记录日志,鉴于我常用的数据库为MongoDB,而Log4Net默认是不支持MongoDB的,又不想为个日志再装新数据库,便开始寻找解决方法。 所幸我找到了这样一个开源项目—— log4mongo:https://github.com/log4mongo/log4mongo-net 不过它存在两个问题: 目前支持的MongoDB官方C#驱动版本为1.8.2,而目前的官方驱动已经更新到2.0+了,新版发生了一些变化,旧代码已经不能用了。 并不是以强类型存入数据库,而是自定义的BsonDocument,这在C#中查询和使用起来非常不方便。 这样只能自己动手改造一下了。 首先我将官方驱动版本升到了2.0.0.828,并且修正了原来跑不通的旧代码。 其次构建了Log、LocationInformation、ExceptionInformation三个实体类,来保存完整的日志信息...

更多

Visual Studio 局域网内测试ASP.Net网站项目的方法

Visual Studio(以下简称VS)对网站项目的调试默认只能本机访问,这样就没法实现移动设备真机测试了,解决办法如下: 首先以管理员模式启动VS,打开项目,启动调试。 然后去系统右下角右键点击IIS Express的图标,选择“显示所有应用程序”: 这时点击自己的网站名称,再点击配置文件的链接: 用VS打开此配置即可,找到自己网站的site节点,注意里面的bindings子节点,按照其中localhost的格式添加一个本机的局域网IP地址上去: 保存后关闭VS,这时记得去关闭Windows的防火墙,或者在防火墙的入站规则中加一个允许对应端口的TCP规则: 再以管理员模式启动VS,再运行调试,就能够从其它设备访问了。 分享或转载本博客站点内的所有原创内容时,都必须遵循此协议: 姓名标示-非商业性-相同方式分享 4.0 国际 (CC BY-NC-SA 4.0) 同时必须附加指向本文页面或本博客首页的超链接。 除此之外的转载、分享方式都必须征得本博客作者的授权,否则将会诉诸法律。

更多

虚拟机乌班图系统安装和配置 MongoDB 3.05 详解

MongoDB的3.0及以后的版本和之前的2.6版是不兼容的,系统里已经有2.6版了,而且也经常需要用到,但最近又想尝试用最新版本做新项目的开发,于是考虑以虚拟机作为MongoDB数据库服务器,宿主机开发时只要访问虚拟机存取数据即可。 仅用于做数据库服务器的话,操作系统当然以轻量为优,Linux自然是优选,不过本人乃Linux苦手,所以最好还是整个有UI的,乌班图(Ubuntu)一直以来都很合我意,以下详尽记录整个安装过程: 虚拟机使用VMware,乌班图使用的是 Kylin 版 14.04 64位,从乌班图的中国官网下载到的:http://cn.ubuntu.com/download 下载好ISO后创建新虚拟机: 设置主机名和密码: 设置虚拟机名称: 设置磁盘容量: 确认创建: 创建后会开始自动安装操作系统: 等待安装完毕后,输入刚才设置的密码登录: PS:我进系统第一件事就是把娘炮向的壁纸和主题给换了…… 登入之后默认连不上网: 进行虚拟机设置,网络连接改为“桥接模式”: 等一会就连网成功了,如果不成功就检查你的路由器设置吧,是不是没开启DHCP服务什么的,或者是否对MAC地址有什...

更多

MVC5配合Ninject的使用范例

网上Ninject的资料大都是MVC3或更早的,少有的几个MVC5的写的也挺麻烦的,又改 Global.asax 又自建解析器类什么的,自己尝试了一下,发现其实现在的Ninject的MVC5插件配置真的非常简单了,下面就来演示一下操作步骤: 首先创建Web项目: 类型设为MVC: 然后管理项目的NuGet包: 搜索Ninject,安装Ninject.MVC5 PS:NuGet服务器经常被墙,不成功就果断挂VPN吧。 可以看到安装程序包列表,接受之: 然后创建测试用的类型,首先是 I武器 接口: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace MVC5配Ninject测试 { public interface I武器 { string 说明 { get; } } } 然后是实现接口的 手里剑 类: using System; using System.Collections.Generi...

更多

ASP.Net Web Api 提示不支持“Get”方法的解决办法

使用Chrome访问Web Api时提示: The requested resource does not support http method ‘GET’. 这种情况通常都是因为你的Api Action方法名不是以“Get”作为起始,Web Api的规则很死,即使你像这样改变了路由规则: 然后准确访问到Action,也是不行的。 所以就只能把你的Action方法名改为“GetXXXXXX”才可以。 分享或转载本博客站点内的所有原创内容时,都必须遵循此协议: 姓名标示-非商业性-相同方式分享 4.0 国际 (CC BY-NC-SA 4.0) 同时必须附加指向本文页面或本博客首页的超链接。 除此之外的转载、分享方式都必须征得本博客作者的授权,否则将会诉诸法律。

更多