当前位置: 首页 > news >正文

做网站开发的提成多少钱/今日网站收录查询

做网站开发的提成多少钱,今日网站收录查询,现在室内设计师好做吗,最好用的设计网站在了解了Lucene以后,我打算亲手来做一个Lucene的小例子,这个例子只是Lucene最简单的应用:使用Lucene实现标准的英文搜索; 1、下载Lucene 下载Lucene,到Lucene的官方下载http://lucene.apache.org/; 2、新建…

在了解了Lucene以后,我打算亲手来做一个Lucene的小例子,这个例子只是Lucene最简单的应用:使用Lucene实现标准的英文搜索;

1、下载Lucene

下载Lucene,到Lucene的官方下载http://lucene.apache.org/;

2、新建项目

新建一个Java Project 然后引入Lucene的jar 包:

因为要实现的功能非常简单,所以Jar包只引入了一部分,当然Lucene的jar包远远不止这些;

core包:Lucene的核心包

analyzers包:主要进行对采集的内容和用户输入的内容进行分词;

highlighter包:主要对搜索的结果进行高亮显示,就像百度搜索结果标红一样;

queries和queryparser包:搜索查询包,根据用户输入关键定去检索内容;

主要用到这三个包; 

 

3、准备数据源文件

要让用户搜索结果,首先得有数据源, 我准备了几个文本文档,里面全是英文内容:

将这些文本文件放在一个全英文的目录里面,同时还要建一些纯英文的目录用来存放索引文件;

4、对数据源进行索引

在用户进行搜索前,系统得先对数据源进行分析,排序,分词,创建索引;这是一步很关键的工作:

新建一个CreateIndex类,代码如下:

package com.lucene;
import java.io.File;
import java.util.Collection;
import org.apache.commons.io.FileUtils;
import org.apache.commons.io.filefilter.TrueFileFilter;
import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.analysis.standard.StandardAnalyzer;
import org.apache.lucene.analysis.util.CharArraySet;
import org.apache.lucene.document.Document;
import org.apache.lucene.document.Field.Store;
import org.apache.lucene.document.StringField;
import org.apache.lucene.document.TextField;
import org.apache.lucene.index.IndexWriter;
import org.apache.lucene.index.IndexWriterConfig;
import org.apache.lucene.index.IndexWriterConfig.OpenMode;
import org.apache.lucene.store.Directory;
import org.apache.lucene.store.FSDirectory;
import org.apache.lucene.util.Version;
import org.junit.Test;public class CreateIndex {/** 数据源目录 **/public static final String DATA_DIR="E:/data/lucene/en/data";/** 索引目录 **/public static final String INDEX_DIR="E:/data/lucene/en/index";@Testpublic void create(){try {Directory dir = FSDirectory.open(new File(INDEX_DIR));//4. 通过CharArraySet可以向分词中追加一些停止词(即排除检索的词)CharArraySet arrSet = new CharArraySet(Version.LUCENE_4_9, 0, false);//3. Analyzer 用于对数据源进行分词Analyzer analyzer = new StandardAnalyzer(Version.LUCENE_4_9, arrSet);//2. IndexWriter的配置信息都存放在IndexWriterConfig中IndexWriterConfig config = new IndexWriterConfig(Version.LUCENE_4_9,analyzer);// OpenMode.CREATE_OR_APPEND 指定,该创建索引是可以在以后通过追加的方式向里面添加内容
                config.setOpenMode(OpenMode.CREATE_OR_APPEND);//1. 创建索引的入口,创建索引必须用IndexWriter进行创建或者追加IndexWriter writer = new IndexWriter(dir,config);File dataDir = new File(DATA_DIR);//5.得到数据源中所有的文件Collection<File> files = FileUtils.listFiles(dataDir, TrueFileFilter.INSTANCE, TrueFileFilter.INSTANCE);for(File file : files){//6. 通过向Writer追加Document的方式添加内容Document doc = new Document();doc.add(new StringField("filename",file.getName(), Store.YES));String content = FileUtils.readFileToString(file);doc.add(new TextField("content",content,Store.YES));writer.addDocument(doc);}writer.close();} catch (Exception e) {e.printStackTrace();}}
}

在新建完CreateIndex类以后,可以使用Test运行一下,然后在索引目录就会生成一些这样的文件:

这就是Lucene创建完索引的索引数据库了;

5、创建检索

创建一个SearchIndex类,主要作用是通过用户输入内容分词,然后检索出用户想要的结果:

import java.io.File;
import org.apache.lucene.analysis.standard.StandardAnalyzer;
import org.apache.lucene.document.Document;
import org.apache.lucene.index.DirectoryReader;
import org.apache.lucene.index.IndexReader;
import org.apache.lucene.queryparser.classic.QueryParser;
import org.apache.lucene.search.IndexSearcher;
import org.apache.lucene.search.Query;
import org.apache.lucene.search.ScoreDoc;
import org.apache.lucene.search.TopDocs;
import org.apache.lucene.store.Directory;
import org.apache.lucene.store.FSDirectory;
import org.apache.lucene.util.Version;
import org.junit.Test;public class SearchIndex {@Testpublic void search(){try {String keyword = "java";// 在这里进行检索的时候,需要加载的目录就是创建索引的目录,创建索引以后,那些原数据源在Lucene上就暂时用不到了Directory directory = FSDirectory.open(new File(CreateIndex.INDEX_DIR));IndexReader reader = DirectoryReader.open(directory);// IndexSearcher 是Lucene的检索的入口点,所有检索都从这里入口IndexSearcher searcher = new IndexSearcher(reader);// 通过analyzer对用户输入的词进行分词StandardAnalyzer analyzer = new StandardAnalyzer(Version.LUCENE_4_9);// 构建检索条件QueryParser parser = new QueryParser(Version.LUCENE_4_9, "content",analyzer);Query query = parser.parse(keyword);// 最后使用searcher.search检索,search方法的参数很多,还可以根据需求,取出相应的条数TopDocs topDocs = searcher.search(query, 20);// topDocs.totalHits 返回的是所有检索到记录的条数的总和ScoreDoc[] docs = topDocs.scoreDocs;System.out.println("关键词\" "+keyword+" \"共检索到 "+topDocs.totalHits+" 条相关的记录");System.out.println("被检索到记录,他们分别放在以下的文件中:");for(ScoreDoc doc : docs){int docId = doc.doc;Document document = reader.document(docId);System.out.println(document.get("filename"));}} catch (Exception e) {e.printStackTrace();}}
}

 

为了方便,我摸拟了一个搜索词“java” 看能查询出多少条数据,运行单元测试:

 

小结:这只是Lucene的最简单的用法,还有很多高深的用法,可以查看Lucene的官方文档,Lucene用来检索中文同样很厉害,大家快去试试吧;下小节我会贴出我写的使用Lucene来做一个千度搜索;

 

http://www.lbrq.cn/news/1454185.html

相关文章:

  • 跨境电商seo/百度搜索优化软件
  • html5 wap网站模板/sem代运营
  • 做淘宝图片的网站/凤山网站seo
  • 张家港网站建设做网站/百度图片搜索入口
  • 自己建的网站可以用笔记本做服务器吗/上海网站建设制作
  • 怎么用ps做京东网站模板/杭州seo 云优化科技
  • 济南商城网站制作/石家庄百度快速排名优化
  • 如何在自己的服务器上做网站/在线查询网站收录
  • 贵州省住房和城乡建设厅网/搜索引擎优化简称seo
  • 单位加强网站建设/2345网址导航大全
  • 网站会员注册系统怎么做视频/seo关键词查询
  • 网站软件下载安装/搜索引擎快速排名推广
  • 网站建设及管理使用情况汇报/seo网站关键词优化方法
  • 做外贸要有英文网站吗/seo教程网站
  • 网站挂到国外服务器地址/长沙百度推广开户
  • 贵州省城乡和建设厅网站/南阳网站优化公司
  • 怎样自己做免费的网站/seo教程论坛
  • 中石油第六建设公司网站/优化设计卷子答案
  • 优化网站制作/seo博客写作
  • 花卉物流园做网站的素材/电子商务网站建设案例
  • 网站模板 外贸工厂/百度打广告收费表
  • 如何在外贸平台推广/seo上海培训
  • 专做定制网站建设/百度关键词查询网站
  • 新媒体营销策划方案范文/网站推广优化排名教程
  • wordpress微商插件/seo怎么收费的
  • 云南网站设计/网站推广方案策划书2000
  • 新开的公司建立网站有哪些要做的/海淀区seo搜索引擎
  • 武汉平面设计公司/如何seo搜索引擎优化
  • 网站不备案可以做百度推广吗/产品软文范例500字
  • 网站建设方案及预算/5118站长工具
  • Linux开发利器:探秘开源,构建高效——基础开发工具指南(下)【make/Makefile】
  • shell脚本tcpdump抓取数据解析执行关机指令
  • Vim编辑器详解:从入门到高效使用
  • WD5208S,12V500MA,应用于小家电电源工业控制领域
  • android MVC/MVP/MVVM/MVI架构发展历程和编写范式
  • WPF TreeView自带自定义滚动条