osc搜索引擎框架search-framework,TngouDB,gso,

项目目的:OSChina 实现全文搜索的简单封装框架

License: Public Domain

包含内容:

  • 重建索引工具 -> IndexRebuilder.java
  • 增量构建索引工具 -> IndexUpdater.java
  • 全文搜索框架

http://git.oschina.net/oschina/search-framework

TngouDB

背景

TngouDB是天狗网(tngou.net)开发的中文搜索引擎数据库,用于天狗农业网的农业搜索引擎。 天狗希望基于开源的力量,把TngouDB打造成为一个专门的中文索引NoSQL数据库。

简介

TngouDB是基于JAVA而开发的跨平台数据库,底层采用Lucene(存储引擎)、IK(分词)、Netty(通信)等 而打造的网络数据库。

TngouDB直接简化的Lucene的相关API的调用,使用SQL语句实现数据的CRUD操作。

特点

TngouDB可以脱离Lucene单机的现在,通过网络可以把TngouDB部署在单独的服务器上,单独处理存储于查询业务。TngouDb同

时简化的Solr的复杂性,用户可以通过简单的SQL语句进行相关的数据操作。TngouDB可以完全抛开Lucene与Solr相关的知识,用常见 的SQL语句就可以实现。

文档

文档地址:http://www.tngou.net/doc/tndb支持完整的安装、配置、使用文档。

使用案例

现在TngouDB暂且是内部测试版本,请先不用用于上线的项目!我们会不断的开发与更新,后期会发布相应的正式版本。

现在TngouDB用于天狗网的搜索业务 天狗农搜(http://www.tngou.net/search

http://git.oschina.net/397713572/TngouDB

本项目为北大搜索引擎TSE的完整源代码(包括索引和爬虫两个独立项目的源代码),TSE 为《搜索引擎——原理、技术与系统》一书介绍的实现原型,有兴趣的朋友可以参考该书学 习TSE。

《搜索引擎——原理、技术与系统》提供的源码下载地址http://sewm.pku.edu.cn/book/
经常不能访问,这里我将以前下载学习的加入详细注释的源代码开放出来,不仅有注释的 源代码,还有一份详细的学习笔记—— CSDN博客专栏地址为:http://blog.csdn.net/column/details/inside-tse.html ,希望对入门的朋友有一些帮 助。

目录说明:

tse081227 —— TSE的网页搜集子系统(爬虫)。

index —— TSE的预处理和查询服务子系统,该目录非常大,其实不是因为源代码大,而是         因为其中的 index/Data/Tianwang.raw.2559638448 非常大,该文件为爬虫爬     取的原始网页数据。

另外,原始的 index/Data/Tianwang.raw.2559638448 文件有三百多兆,上传时提示超出 了
git.oschina.net/ 文件的最大限制(100M),所以将文件内容删掉了很多,为了得到
较小的文件,这个对于整个系统的运行没有任何影响,因为它只是爬取的原始网页数据, 可以多可以少。

http://git.oschina.net/lewsn2008/LBTSE

gso(Google So)

这是一个用Node.JS编写的Google搜索服务,原理是拿着用户的关键词去Google服务器搜索,然后将返回的结果响应给用户。使用NodeJs编写的谷歌搜索代理程序

查看演示项目主页

关于证书的说明:文件列表中提供的证书仅为测试使用,在生产环境下需替换为你自己的证书


部署

安装:

git clone https://git.oschina.net/lenbo/gso.gitcd gso
npm install --production

运行命令:

测试/调试:

npm startnode ./bin/run

生产环境

  • 使用forever启动:
    forever start -e err.log -o output.log ./bin/run
  • 使用pm2启动:
    pm2 start ./bin/run -i max

自定义设置

站点名称

设置站点名称后会在首页logo下,浏览器标题栏中显示。 修改conf/config.js文件, 找到name节点, 修改为自己的站点名:

name: ‘谷搜客‘

统计脚本

将脚本粘贴到views/partials/statistics.ejs文件中

首页随机文字

将文字粘贴到data/words.txt中,每句以一个空行分割, 支持html代码

设置多个Google IP防止被屏蔽

将可用的IP放入conf/ip.txt文件中,每个ip以一个回车换行分割.

设置HTTP代理服务器

有时,我们可能需要设置一个代理服务器,比如google的ip失效暂时无法使用或被google屏蔽的时候. 修改conf/config.js文件, 找到proxy节点:

proxy: { 
      enable: false,  //设置是否启用      timeout: 5000,  //设置超时时间, enable为true时有效      host: ‘‘,  //代理服务器地址      port: 80  //代理服务器端口  }

静态文件压缩

clone后的代码是未压缩的,可以使用grunt工具进行压缩。

压缩js,css文件

  1. 安装grunt工具: npm install -g grunt-cli
  2. 在项目根目录执行grunt static命令
  3. 修改conf/config.js中的r_prefix值为/public

注:执行grunt命令前必须使用npm install安装依赖,而不是npm install --production

html代码压缩

启动服务前设置NODE_ENVproduction即可,如NODE_ENV=production forever start bin/run

完成记录

  1. 增加“相关搜索”功能;
  2. OpenSearch, 支持IE,Firefox,Chrome设置为默认搜索引擎;
  3. 简单的敏感词检测,否则连接会被墙/连接重置;
  4. HTML代码压缩,基于html-minifier模块进行压缩已渲染好的HTML代码;
  5. headroom功能(当页面向下滚动时,搜索区消失,当页面向上滚动时,搜索区又出现了。个人觉得这个体验对小屏幕笔记本及pad比较好,尤其是手机终端);
  6. 实现HTTPS功能(关键词加密);
  7. 使用cheeio替代jQuery解析;
  8. 输入框自动完成;
  9. 搜索内容语言切换;
  10. 根据时间段筛选结果;
  11. 使用filetype指令搜索时,结果项前缀显示filetype;
  12. 支持设置多个Google IP(2014-12-25);
  13. 增加HTTP代理功能(2014-12-28);

TODO

  1. [ ] Pad显示优化,字体优化;
  2. [ ] 优化手机端使用体验;
  3. [ ] 支持键盘快捷键;
  4. [ ] 支持维基百科检索;
  5. [ ] 优化错误日志记录;
  6. [ ] 支持视频元信息检索(同时检索可播放来源)
  7. [ ] 增加在线代理功能(代理搜索结果中出现的部分被屏蔽的网站);

http://git.oschina.net/lenbo/gso

代码是一年前写好的,所以爬虫可能已经失效,不过在此基础上改改应该就可以了。

K:\GIT\dianying\scripts>tree /f文件夹 PATH 列表卷序列号为 EE77-EC45K:.│  iqiyi_movie_test.py│  letv_movie_test.py│  m1905_movie_test.py│  pps_movie_test.py│  pptv_movie_test.py│  qq_movie_test.py│  sohu_movie_test.py│  tudou_movie_test.py│  xunlei_movie_test.py│  youku_movie_test.py│└─douban
        doubanapi_1.py
        doubanapi_2.py
        doubanapi_3.py
        doubanapi_xj.py
        douban_movie_test.py

搜索网站

dianying_web.py支持将爬虫保存到mongodb中的数十万条记录以WEB方式的形式展示,并支持关键字查询。

http://git.oschina.net/awakenjoys/dianying

时间: 2024-10-27 05:07:21

osc搜索引擎框架search-framework,TngouDB,gso,的相关文章

9个基于Java的搜索引擎框架

在这个信息相当繁杂的互联网时代,我们已经学会了如何利用搜索引擎这个强大的利器来找寻目标信息,比如你会在Google上搜索情人节如何讨女朋友欢心,你也会在百度上寻找正规的整容医疗机构(尽管有很大一部分广告骗子).那么如果在你自己开发的网站系统中需要能让用户搜索一些重要的信息,并且能以结构化的结果展现给用户,下面分享的这9款Java搜索引擎框架或许就可以帮助到你了. 1.Java 全文搜索引擎框架 Lucene 毫无疑问,Lucene是目前最受欢迎的Java全文搜索框架,准确地说,它是一个全文检索引

分分钟教你学习一个新的框架--Photos FrameWork

相关链接:ios-深度解析二维码的生成与使用 swfit项目初体验Photo-Browser 一.点击查看大图 1.点击图片或按钮(点击查看大图按钮),modal出来一个控制器,显示大图片 2.怎么处理能让点击图片就能查看大图? 两种方法:1.给图片添加点按手势 2.给图片所在的view上添加 - (void)touchesEnded:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event 2.1 添加点按手势 优点:适用于任何场景下,不受

实体框架- Entity Framework 基础篇

以前写数据层D层的时候里面有好多的SQL语句,如何省略到繁琐的SQL语句,微软提供了一种很好的方式-实体框架-Entity Framwork.一种对象映射机制,支持.NET开发人员使用域特定对象来出来关系数据,消除了对开发人员通常需要编写的大部分数据访问代码的需求. ADO.NET Entity Framework 是微软以 ADO.NET 为基础所发展出来的对象关系对应 (O/R Mapping) 解决方案.实体框架Entity Framework是ADO.NET中的一组支持开发面向数据的软件

C#代码生成工具:文本模板初体验 使用T4批量修改实体框架(Entity Framework)的类名

转自:http://www.cnblogs.com/huangcong/archive/2011/07/20/1931107.html 在之前的文本模板(T4)初体验中我们已经知道了T4的用处,下面就看看如何用它来实现批量修改实体框架(Entity Framework)中的类名.我们都知道ADO.NET 实体数据模型中有一种方式是以数据库模型来生成数据模型的,这是个很简便的实体数据模型生成的方式,但是因为微软提供的自定义接口不足,我们无法实现对生成的数据模型实体类批量进行修改(至少我上网找了很久

实体框架(Entity Framework)快速入门--实例篇

在上一篇 <实体框架(Entity Framework)快速入门> 中我们简单了解的EF的定义和大体的情况,我们通过一步一步的做一个简单的实际例子来让大家对EF使用有个简单印象,看操作步骤 第一步:创建控制台项目 这个就不多说了,如果新建项目你还不知道,那先去学学基础吧. 第二步:创建实体模型 在项目上右击 添加新建项目→Ado .Net 实体数据模型 如下图所示: 第三步:与现有的 数据库 进行连接生成EF实体 在做这步之前,首先确定你是否已经有现有数据库,当然在这提供我自己的数据库脚本.

iOS9全新的联系人相关框架——Contacts Framework

iOS9全新的联系人相关框架——Contacts Framework 一.引言 在以前iOS开发中,涉及联系人相关的编程,代码都非常繁琐,并且框架的设计也不是Objective-C风格的,这使开发者用起来非常的难受.在iOS9中,apple终于解决了这个问题,全新的Contacts Framework将完全替代AddressBookFramework,AddressBookFramework也将成为历史被弃用.至于AddressBookFramework的相关api如何繁琐,在以前的博客中有记录

嵌入式框架Zorb Framework搭建三:列表的实现

我是卓波,我是一名嵌入式工程师,我万万没想到我会在这里跟大家吹牛皮. 嵌入式框架Zorb Framework搭建过程 嵌入式框架Zorb Framework搭建一:嵌入式环境搭建.调试输出和建立时间系统 嵌入式框架Zorb Framework搭建二:环形缓冲区的实现 嵌入式框架Zorb Framework搭建三:列表的实现 嵌入式框架Zorb Framework搭建四:状态机的实现 嵌入式框架Zorb Framework搭建五:事件的实现 嵌入式框架Zorb Framework搭建六:定时器的实

IOS 中的CoreImage框架(framework)

http://www.cnblogs.com/try2do-neo/p/3601546.html coreimage framework 组成 apple 已经帮我们把image的处理分类好,来看看它的结构: 主要分为三部分: 1)定义部分:CoreImage 何CoreImageDefines.见名思义,代表了CoreImage 这个框架和它的定义. 2)操作部分: 滤镜(CIFliter):CIFilter 产生一个CIImage.典型的,接受一到多的图片作为输入,经过一些过滤操作,产生指定

架构(Architecture)和框架(Framework)杂谈

1. 架构和框架的设计层次不同 类似于硬件设计,软件设计也分为不同的层次.典型的软件设计层次如下图: 在这个图中我们可以看到,Framework处于Micro-architectures和Application Level之间.Deisgn Patterns是Micro-architectures级的设计,Framework由多个Design Pattern和其他微架构设计元素形成.而Object&classes.Micro-architectures和Framework被称为 Micro Le