`
qingwei201314
  • 浏览: 169106 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

solr配置搜索引擎

 
阅读更多

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搭建企业搜索平台 二.... 三,,,,

    solr 企业搜索引擎教程

    ### Apache Solr 企业搜索引擎教程知识点总结 #### 1. Apache Solr 概述 - **Solr**:Apache Solr 是一款高度可扩展且高性能的企业级搜索平台,由Apache软件基金会维护。它是一个开源搜索服务器,使用Java语言编写...

    Solr5.5搜索引擎之分词原理说明.docx

    Solr5.5 搜索引擎之分词原理说明 Solr5.5 搜索引擎之分词原理说明是指 Solr5.5 搜索引擎内部使用的分词原理,旨在帮助开发者自定义自己的分词器时掌握分词的基础知识。 1. 中文分词 中文分词是指将中文汉字序列切...

    利用Solr搭建你的搜索引擎

    9. **分布式部署**:当数据量增大时,可以将Solr配置为分布式模式,通过SolrCloud实现自动的索引分片、复制和故障转移。 10. **安全设置**:如果是在生产环境中使用,还需要考虑Solr的安全配置,例如启用SSL,设置...

    solr搜索引擎的使用介绍

    Solr搜索引擎的使用介绍 Solr,全称为Apache Solr,是Apache软件基金会的一个开源项目,基于Java开发,是一款高效、灵活且强大的全文检索服务引擎。它构建在Lucene库之上,提供了更高级别的企业级搜索功能,如...

    基于Solr的搜索引擎研究与实现

    **基于Solr的搜索引擎研究与实现** 随着信息技术的飞速发展,信息时代已经全面渗透到人们的日常生活、学习、工作和娱乐之中。面对爆炸性的信息增长,如何高效地从海量数据中提取所需信息,成为了个人和社会的共同...

    人工智能-项目实践-搜索引擎-基于solrj开发solr主从搜索引擎服务的dubbo组件

    《基于Solrj开发Solr主从搜索引擎服务的Dubbo组件》 在现代信息技术领域,搜索引擎作为信息检索的重要工具,其高效、精准的搜索能力对于企业和用户来说具有极高的价值。本项目实践聚焦于利用Solrj开发一个支持主从...

    企业级搜索引擎solr教程

    tomcat7下实现solr4.3的部署与配置,配置中文服务器。通过solrj实现索引的创建,修改,删除,查询。并实现httpclienct创建、修改索引,检索信息等。

    solr搜索引擎

    Solr搜索引擎是一款强大的开源全文搜索和分析引擎,由Apache软件基金会开发并维护。它主要设计用于处理大量数据的高效检索,支持多种数据源,并提供高度可扩展性和容错性。在深入探讨Solr之前,我们先来理解一下什么...

    人工智能-项目实践-搜索引擎-基于solr的中文搜索引擎框架

    在压缩包子文件“zh-solr-se-master”中,我们可以推测这可能是一个关于Solr中文搜索引擎的源代码仓库,可能包含了配置文件、Java代码、索引数据、测试用例等。在实际操作中,我们首先需要设置Solr服务器,配置适合...

    solr实现的搜索引擎

    结合《解密搜索引擎技术实战》第八章的代码,你可以逐步学习并实践上述知识点,理解Solr搜索引擎的实现原理,从而掌握构建高效搜索引擎的技术。记得在实际操作中不断调试和优化,以适应不同的业务场景和性能需求。

    solr-7.1.0.zip solr搜索引擎安装包

    2. `server`:包含了Solr服务器运行所需的所有组件,如Jetty web服务器、Solr配置文件、日志文件等。 3. `example`:包含了一个示例配置,展示了如何设置和运行Solr的基本步骤。 4. `dist`:包含Solr的jar文件和其他...

    积分商城基于Solr的搜索引擎优化

    Solr是一个基于Lucene的开源搜索引擎,它提供了一个企业级的搜索服务器,可以用来执行全文搜索、结构化搜索等多种功能。在电子商务网站中,搜索引擎扮演着至关重要的角色,因为它直接影响着用户体验和网站的运营效率...

    高效的企业级搜索引擎Solr

    ### 高效的企业级搜索引擎Solr #### 一、Solr概述 Solr是一款高性能、可伸缩的企业级搜索引擎,广泛应用于需要复杂全文检索功能的系统中。它基于Java开发,能够提供高度灵活的配置机制,并且具备强大的索引与查询...

Global site tag (gtag.js) - Google Analytics