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搭建企业搜索平台 二.... 三,,,,
### Apache Solr 企业搜索引擎教程知识点总结 #### 1. Apache Solr 概述 - **Solr**:Apache Solr 是一款高度可扩展且高性能的企业级搜索平台,由Apache软件基金会维护。它是一个开源搜索服务器,使用Java语言编写...
Solr5.5 搜索引擎之分词原理说明 Solr5.5 搜索引擎之分词原理说明是指 Solr5.5 搜索引擎内部使用的分词原理,旨在帮助开发者自定义自己的分词器时掌握分词的基础知识。 1. 中文分词 中文分词是指将中文汉字序列切...
9. **分布式部署**:当数据量增大时,可以将Solr配置为分布式模式,通过SolrCloud实现自动的索引分片、复制和故障转移。 10. **安全设置**:如果是在生产环境中使用,还需要考虑Solr的安全配置,例如启用SSL,设置...
Solr搜索引擎的使用介绍 Solr,全称为Apache Solr,是Apache软件基金会的一个开源项目,基于Java开发,是一款高效、灵活且强大的全文检索服务引擎。它构建在Lucene库之上,提供了更高级别的企业级搜索功能,如...
**基于Solr的搜索引擎研究与实现** 随着信息技术的飞速发展,信息时代已经全面渗透到人们的日常生活、学习、工作和娱乐之中。面对爆炸性的信息增长,如何高效地从海量数据中提取所需信息,成为了个人和社会的共同...
《基于Solrj开发Solr主从搜索引擎服务的Dubbo组件》 在现代信息技术领域,搜索引擎作为信息检索的重要工具,其高效、精准的搜索能力对于企业和用户来说具有极高的价值。本项目实践聚焦于利用Solrj开发一个支持主从...
tomcat7下实现solr4.3的部署与配置,配置中文服务器。通过solrj实现索引的创建,修改,删除,查询。并实现httpclienct创建、修改索引,检索信息等。
Solr搜索引擎是一款强大的开源全文搜索和分析引擎,由Apache软件基金会开发并维护。它主要设计用于处理大量数据的高效检索,支持多种数据源,并提供高度可扩展性和容错性。在深入探讨Solr之前,我们先来理解一下什么...
在压缩包子文件“zh-solr-se-master”中,我们可以推测这可能是一个关于Solr中文搜索引擎的源代码仓库,可能包含了配置文件、Java代码、索引数据、测试用例等。在实际操作中,我们首先需要设置Solr服务器,配置适合...
结合《解密搜索引擎技术实战》第八章的代码,你可以逐步学习并实践上述知识点,理解Solr搜索引擎的实现原理,从而掌握构建高效搜索引擎的技术。记得在实际操作中不断调试和优化,以适应不同的业务场景和性能需求。
2. `server`:包含了Solr服务器运行所需的所有组件,如Jetty web服务器、Solr配置文件、日志文件等。 3. `example`:包含了一个示例配置,展示了如何设置和运行Solr的基本步骤。 4. `dist`:包含Solr的jar文件和其他...
Solr是一个基于Lucene的开源搜索引擎,它提供了一个企业级的搜索服务器,可以用来执行全文搜索、结构化搜索等多种功能。在电子商务网站中,搜索引擎扮演着至关重要的角色,因为它直接影响着用户体验和网站的运营效率...
### 高效的企业级搜索引擎Solr #### 一、Solr概述 Solr是一款高性能、可伸缩的企业级搜索引擎,广泛应用于需要复杂全文检索功能的系统中。它基于Java开发,能够提供高度灵活的配置机制,并且具备强大的索引与查询...