A. java站内搜索标题关键字怎么做
先收录网站网页到自己的数据库中,定期更新。如果你需要做站内搜索引擎,而且项目里用到了hibernate,那用compass是你的最佳选择。
B. 用Java如何实现站内搜索
微小的站点:SQL like 不模糊,效率低
小的站点:google,网络都有站内接口,推荐的。
一般:关键字搜索+数据库索引+一些搜索技巧,比如美丽的套鞋 变套鞋,之类。。
自己做搜索引擎:lucene 是个老牌的开源搜索工具了,你要不看看?书页很多,什么lucene in action ,反正原理就是打散内容,排序。做索引什么的。都有接口,调用下就好了。。不过还是比较麻烦的。站内只要对数据库标题或者内容做索引,ID做标志就好了。
C. 怎么用java 开发一个搜索引擎呀
一.创建索引
1.一般创建索引的核心步骤
(1).创建索引写入对象IndexWriter:
IndexWriter indexWriter = new IndexWriter(INDEX_STORE_PATH,new StandardAnalyzer(),create);
参数说明:INDEX_STORE_PATH:索引文件存放路径
new StandardAnalyzer():分词工具
create:此参数为Boolean型,true表示重新创建整个索引,false表示增量式创建索引。
(2).创建文档模型,并用IndexWriter对象写入
Document doc = new Document();
Field field1 = new Field(fieldName1, fieldValue ,Field.Store.YES, Field.Index.TOKENIZED);
doc.add(field1);
Field field2 = new Field(fieldName2, fieldValue ,Field.Store.YES, Field.Index.TOKENIZED);
doc.add(field2);
……
indexWriter.addDocument(doc);
indexWriter.close();
参数说明:
Document:负责搜集数据源,它可以从不同的物理文件提取数据并放入同一个Document中或从一个物理文件中提取出不同的数据并放入同一个Document中。
如下图所示
二.搜索索引
1.lucene搜索的核心步骤:
String[]fields={“title”,“summary”,……};//要查找的field范围
BooleanClause.Occur[]flags={BooleanClause.Occur.SHOULD, BooleanClause.Occur.MUST ,……};
Queryquery = MultiFieldQueryParser.parse(queryStr, fields,flags,new StandardAnalyzer());
Hitshits=newIndexSearcher(INDEX_STORE_PATH).search(query);
for (int i = 0;i < hitsLength ; i++)
{
Document doc = hits.doc(i);
String title = doc.get(“title”);
String summary = doc.get(“summary”);
//搜索出来的结果高亮显示在页面上
if (title != null) {
TokenStream tokenStream = analyzer.tokenStream(“title”,new StringReader(title));
String highlighterValue = highlighter.getBestFragment(tokenStream, title) ;
if(highlighterValue != null){
title = highlighterValue ;
}
//log.info("SearchHelper.search.title="+title);
}
if(summary!= null){
TokenStream tokenStream = analyzer.tokenStream(“summary”,new StringReader(summary));
String highlighterValue = highlighter.getBestFragment(tokenStream, creator) ;
if(highlighterValue != null){
summary = highlighterValue ;
}
//log.info("SearchHelper.search. summary ="+ summary);
}
}
2.结合平台构造搜索模块
PageData类用来存放检索结果集数据。
PageInfo类用来存放页面相关信息例如,PageData对象集合、总记录个数、每一页的记录数、总页面数量等等。
SearchHelper用来充当整个搜索模块的对外接口。
三.为平台组件添加索引的步骤(以知识中心为例)
1.在com.cscec.oa.searchengine.extend.mole目录下添加一个新的package
例如:com.cscec.oa.searchengine.extend.mole.resourcestore
2.在新的目录下建立data package并建立相应的数据类,并使这个数据类继承BeanData。
例如:
package com.cscec.oa.searchengine.extend.mole.resourcestore.data
public class ResourceStoreBeanData extends BeanData{
}
3.与data package同一级目录建立manager package并建立相应管理类,并使这个管理类继承BeanDataManager
例如:
com.cscec.oa.searchengine.extend.mole.resourcestore.manager
public class extends BeanDataManager{
}
4.以管理员的身份登陆OA后,在菜单中找到“索引模块管理”链接,将相应信息添加完成后,便可以在List页面点击“创建索引”对该模块的数据进行索引的建立,建立完成后便可以进行查询。
D. 如何实现站内搜索
本经验以Java语言为例,首先我们打开Java的IDE,这里以常用的Eclipse软件为例,在一个创建好了的Java工程中,或者自己另行创建一个新的java工程项目,通过点击File-New-Class,即可新建一个普通的Java类
E. java 全站检索
这个全站搜索不需要技术
1.数据量过大,你全站搜索很影响速度!
2.全站搜索,对于一个大站都是在数据库做好索引,在索引里面搜索,并不是真正的在数据库搜索!
3.全站搜索如果不做数据库的索引,很耗费数据库资源,现在建站问题不在于代码写的是否冗余,而是数据库是否能做到最好优化!
4.一般的小站都是链到网络或是google上的,很少做全站搜索!
F. 用Java如何实现站内搜索
1,使用lucene
2. 使用solr
3. 使用sphinx
4. 低效率使用sql like
G. 淘宝,百度 ,以及网站的站内搜索是如何做的 快速查找出来(java小白)
查询都是 一样的,主要就是对关键字的搜索,每个产品都有几个关键字,在数据库中用一个字段进行存储,搜索的sql语句用like匹配,不用等号,,我们写出来会比较慢(人家数据库做的好,有专门的人进行处理)
H. java如何实现文件搜索功能
java实现文件搜索主要使用file类和正则表达式,如下示例:
packagecom.kiritor.util;
importjava.io.File;
importjava.io.FileFilter;
importjava.util.Arrays;
importjava.util.Collections;
importjava.util.List;
/**
*文件的相关操作类
*
*@authorKiritor
*/
publicclassFileOperation{
;
privatestaticStringfilePath;
privatestaticFile[]fileList=null;//保存文件列表,过滤掉目录
publicFileOperation(){
}
/**构造函数的参数是一个目录*/
publicFileOperation(Stringpath){
Filefile=newFile(path);
if(file.isDirectory())
this.contentPath=path;
else
this.filePath=path;
}
/**获取文件列表*/
publicstaticFile[]getFiles(){
if(contentPath==null){
Filefile=newFile(filePath);
fileList=newFile[1];
fileList[0]=file;
returnfileList;
}
fileList=newFile(contentPath).listFiles(newFileFilter(){
/**使用过滤器过滤掉目录*/
@Override
publicbooleanaccept(Filepathname){
if(pathname.isDirectory())
{
returnfalse;
}else
returntrue;
}
});
returnfileList;
}
/**对当前目录下的所有文件进行排序*/
publicstaticFile[]sort(){
getFiles();
Arrays.sort(fileList,newFileComparator());
returnfileList;
}
publicstaticvoidtree(Filef,intlevel){
StringpreStr="";
for(inti=0;i<level;i++){
preStr+="";
}
File[]childs=f.listFiles();
//返回一个抽象路径名数组,这些路径名表示此抽象路径名表示的目录中的文件。
for(inti=0;i<childs.length;i++){
System.out.println(preStr+childs[i].getName());
if(childs[i].isDirectory()){
tree(childs[i],level+1);
}
}
}
//提供一个"比较器"
.util.Comparator<File>{
@Override
publicintcompare(Fileo1,Fileo2){
//按照文件名的字典顺序进行比较
returno1.getName().compareTo(o2.getName());
}
}
}