1.下载apache-solr-3.5.0.zip包,解压
2.修改example/solr/conf/schema.xml文件,增加fieldtype节点:
<fieldType name="text_cn" class="solr.TextField">
<analyzer type="index">
<tokenizer class="solr.SmartChineseSentenceTokenizerFactory"/>
<filter class="solr.SmartChineseWordTokenFilterFactory"/>
<filter class="solr.StopFilterFactory"
ignoreCase="true"
words="stopwords_cn.txt"
enablePositionIncrements="true"
/>
<filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.SmartChineseSentenceTokenizerFactory"/>
<filter class="solr.PositionFilterFactory" />
<filter class="solr.SynonymFilterFactory" synonyms="synonyms_cn.txt" ignoreCase="true" expand="true"/>
<filter class="solr.StopFilterFactory"
ignoreCase="true"
words="stopwords_cn.txt"
enablePositionIncrements="true"
/>
<filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt" />
</analyzer>
</fieldType>
3.增加field节点:
<field name="text_cn" type="text_cn" indexed="true" stored="true" multiValued="true" />
4.修改为defaultSearchField:
<defaultSearchField>text_cn</defaultSearchField>
5.修改example/solr/conf/solrconfig.xml,增加lib包:
<lib dir="../../contrib/analysis-extras/lucene-libs" />
<lib dir="../../contrib/analysis-extras/lib" />
<lib dir="../../dist/" regex="apache-solr-analysis-extras-\d.*\.jar" />
6.到example下执行命令启动jetty: java -jar start.jar
7.在spring中配置定时任务执行索引:
@Service
public class IndexTask {
private Constant constant = new Constant();
@Scheduled(cron = "20 13 20 ? * *")
public void createIndex() {
String appPath = IndexTask.class.getResource("/").toString();
appPath = StringUtils.substringAfter(
StringUtils.substringBefore(appPath, "WEB-INF"), "/");
String docPath = appPath + "upload/";
try {
File file = new File(docPath);
String urlString = constant.getUrl();
StreamingUpdateSolrServer solr = new StreamingUpdateSolrServer(
urlString, 1, 1);
solr.deleteByQuery("*:*");
solr.blockUntilFinished();
indexFilesSolrCell(file.listFiles(), solr);
} catch (Exception e) {
e.printStackTrace();
}
}
private void indexFilesSolrCell(File[] fileList,
StreamingUpdateSolrServer solr) throws IOException,
SolrServerException, InterruptedException {
for (File file : fileList) {
if (file.isFile()) {
ContentStreamUpdateRequest up = new ContentStreamUpdateRequest(
"/update/extract");
up.addFile(file);
up.setParam("uprefix", "attr_");
up.setParam("fmap.content", "text_cn");
up.setParam("literal.id", file.getPath());
up.setAction(AbstractUpdateRequest.ACTION.COMMIT, false, false);
solr.request(up);
solr.blockUntilFinished();
System.out.println("Analysis file:" + file.getPath());
} else if (file.isDirectory()) {
indexFilesSolrCell(file.listFiles(), solr);
}
}
}
}
8.在struts的action中增加全文检索方法:
@Action(value = "/listSolrAction", results = { @Result(name = "list", location = "/lucene/listLucene.jsp") })
public String list() {
String urlString ="http://localhost:8983/solr";
System.out.println(urlString);
try {
StreamingUpdateSolrServer solr = new StreamingUpdateSolrServer(
urlString, 1, 1);
if (StringUtils.isNotBlank(search)) {
SolrQuery solrQuery = new SolrQuery();
solrQuery.set("q", "text_cn:" + search);
QueryResponse rsp = solr.query(solrQuery);
SolrDocumentList solrDocumentList = rsp.getResults();
for (SolrDocument solrDocument : solrDocumentList) {
SearchItem searchItem = new SearchItem();
searchItem.setHref(solrDocument.getFieldValue("id")
.toString());
String content = removeSpecial(solrDocument.getFieldValue(
"text_cn").toString());
content = StringUtils.left(content, 30);
searchItem.setContent(content);
String title = "";
Object titleO = solrDocument.getFieldValue("title");
if (titleO == null) {
title = StringUtils.left(content, 10);
} else {
title = removeSpecial(titleO.toString());
}
searchItem.setTitle(title);
searchItemList.add(searchItem);
}
}
} catch (Exception e) {
e.printStackTrace();
}
return "list";
}
9.jsp页面内容:
<s:form action="listSolrAction">
<s:textfield name="search"></s:textfield>
<s:submit></s:submit>
</s:form>
<table>
<s:iterator var="searchItem" value="searchItemList">
<tr>
<td><a href='<s:property value="href"/>'><s:property
value="title" /> </a></td>
</tr>
<tr>
<td><s:property value="content"/></td>
</tr>
</s:iterator>
</table>
分享到:
相关推荐
solr配置搜索引擎平台 一、 SOLR搭建企业搜索平台 二.... 三,,,,
Solr 5.3.1搜索引擎搭建详细教程(包括集成mysql、添加中文分词、添加同义词、查询语法等)
更重要的是,Solr 创建的索引与 Lucene 搜索引擎库完全兼容。 通过对 Solr 进行适当的配置, 某些情况下可能需要进行编码,Solr 可以阅读和使用构建到其他 Lucene 应用程序中的索引。此 外,很多 Lucene 工具(如 Nutch、...
tomcat7下实现solr4.3的部署与配置,配置中文服务器。通过solrj实现索引的创建,修改,删除,查询。并实现httpclienct创建、修改索引,检索信息等。
搜索引擎solr环境配置、分词及索引操作
sorl搜索引擎安装与文件,Solr 是Apache下的一个顶级开源项目,采用Java开发,它是基于Lucene的全文搜索服务器。Solr提供了比Lucene更为丰富的查询语言,同时实现了可配置、可扩展,并对索引、搜索性能进行了优化。
Solr提供了比Lucene更为丰富的查询语言,同时实现了可配置、可扩展,并对索引、搜索性能进行了优化。使用Solr进行创建索引和搜索索引的实现方法很简单,如下:*创建索引:客户端(可以是浏览器可以是Java程序)用...
Solr是一个基于Lucene的Java搜索引擎服务器。Solr 提供了层面搜索、命中醒目显示并且支持多种输出格式(包括 XML/XSLT 和 JSON 格式)。它易于安装和配置,而且附带了一个基于 HTTP 的管理界面。Solr已经在众多大型...
该搜索引擎据具有增量查询、高亮显示、多核配置的功能。
它是基于lucene搜索引擎的服务,你将能够通过HTTP协议以XML格式将文档放入搜索服务器(这个过程叫做索引),你能够通过HTTP协议的GET来查询搜索服务器并且得到XML格式的结果。 Solr的特性包括:高级的全文搜索功能 专...
Solr是一个独立的企业级搜索应用服务器,它对外提供...用户可以通过http请求,向搜索引擎服务器提交一定格式的XML文件,生成索引;也可以通过Http Get操作提出查找请求,并得到XML格式的返回结果。先从入门配置开始吧。
用户可以通过http请求,向搜索引擎服务器提交一定格式的XML文件,生成索引;也可以通过Http G Solret操作提出查找请求,并得到XML格式的返回结果。 Solrj 是访问 Solr 的 Java 客户端,它提供添加、更新和查询Solr ...
在本套课程中,我们将全面的讲解Solr,从Solr基础到Solr高级,再到项目实战,基本上涵盖了Solr中所有的知识点。 主讲内容 章节一:Solr基础(上) 1. 环境搭建 2. 核心讲解 3. 数据导入 4. 各种中文分析器 章节二:...
Solr是一个独立的企业级应用服务器,...同时对其进行了扩展,提供了比Lucene更为丰富的查询语言,同时实现了可配置、可扩展并对查询性能进行了优化,并且提供了一个完善的功能管理界面,是一款非常优秀的全文搜索引擎。
Solr是一个高性能,采用Java5开发,...同时对其进行了扩展,提供了比Lucene更为丰富的查询语言,同时实现了可配置、可扩展并对查询性能进行了优化,并且提供了一个完善的功能管理界面,是一款非常优秀的全文搜索引擎。
Solr 是Apache下的一个顶级开源项目,采用Java开发,它是基于Lucene的全文搜索服务器。Solr提供了比Lucene更为丰富的查询语言,同时实现了可配置、可扩展,并对索引、搜索性能进行了优化。
重点讲解了solr的配置和使用,功能的介绍,配合nutch的使用
并对其进行了扩展,提供了比Lucene更为丰富的查询语言,同时实现了可配置,可扩展并对查询性能进行了优化,提供了一个完善的功能管理页面,是一款非常优秀的全文搜索引擎。 3,solr工作方式 文档通过http利用xml加...
3.4 搜索引擎配置 34 3.4.1 Solr Schema 设计(如何定制索引的结构?) 34 3.5 如何进行索引操作? 36 3.5.1 基本索引操作 36 3.5.2 批量索引操作 37 3.6 如何进行搜索 39 3.6.1 搜索语法 39 3.6.2 排序 42 3.6.3 字段...