`
qingwei201314
  • 浏览: 161760 次
  • 性别: 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搭建企业搜索平台 二.... 三,,,,

    Solr5.3.1搜索引擎搭建详细教程(包括集成mysql、添加中文分词、添加同义词、查询语法等)

    Solr 5.3.1搜索引擎搭建详细教程(包括集成mysql、添加中文分词、添加同义词、查询语法等)

    solr 企业搜索引擎教程

    更重要的是,Solr 创建的索引与 Lucene 搜索引擎库完全兼容。 通过对 Solr 进行适当的配置, 某些情况下可能需要进行编码,Solr 可以阅读和使用构建到其他 Lucene 应用程序中的索引。此 外,很多 Lucene 工具(如 Nutch、...

    企业级搜索引擎solr教程

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

    搜索引擎solr环境配置、分词及索引操作

    搜索引擎solr环境配置、分词及索引操作

    solr搜索引擎服务

    sorl搜索引擎安装与文件,Solr 是Apache下的一个顶级开源项目,采用Java开发,它是基于Lucene的全文搜索服务器。Solr提供了比Lucene更为丰富的查询语言,同时实现了可配置、可扩展,并对索引、搜索性能进行了优化。

    Solr搜索引擎搭建详细过程

    Solr提供了比Lucene更为丰富的查询语言,同时实现了可配置、可扩展,并对索引、搜索性能进行了优化。使用Solr进行创建索引和搜索索引的实现方法很简单,如下:*创建索引:客户端(可以是浏览器可以是Java程序)用...

    开源企业搜索引擎SOLR的应用教程

    Solr是一个基于Lucene的Java搜索引擎服务器。Solr 提供了层面搜索、命中醒目显示并且支持多种输出格式(包括 XML/XSLT 和 JSON 格式)。它易于安装和配置,而且附带了一个基于 HTTP 的管理界面。Solr已经在众多大型...

    solr编写的搜索引擎

    该搜索引擎据具有增量查询、高亮显示、多核配置的功能。

    solr搜索培训

    它是基于lucene搜索引擎的服务,你将能够通过HTTP协议以XML格式将文档放入搜索服务器(这个过程叫做索引),你能够通过HTTP协议的GET来查询搜索服务器并且得到XML格式的结果。 Solr的特性包括:高级的全文搜索功能 专...

    Solr入门配置说明

    Solr是一个独立的企业级搜索应用服务器,它对外提供...用户可以通过http请求,向搜索引擎服务器提交一定格式的XML文件,生成索引;也可以通过Http Get操作提出查找请求,并得到XML格式的返回结果。先从入门配置开始吧。

    solr配置和solrj使用(demo)

    用户可以通过http请求,向搜索引擎服务器提交一定格式的XML文件,生成索引;也可以通过Http G Solret操作提出查找请求,并得到XML格式的返回结果。 Solrj 是访问 Solr 的 Java 客户端,它提供添加、更新和查询Solr ...

    java进阶Solr从基础到实战

    在本套课程中,我们将全面的讲解Solr,从Solr基础到Solr高级,再到项目实战,基本上涵盖了Solr中所有的知识点。 主讲内容 章节一:Solr基础(上) 1. 环境搭建 2. 核心讲解 3. 数据导入 4. 各种中文分析器 章节二:...

    solr教程(配置+集成)

    Solr是一个独立的企业级应用服务器,...同时对其进行了扩展,提供了比Lucene更为丰富的查询语言,同时实现了可配置、可扩展并对查询性能进行了优化,并且提供了一个完善的功能管理界面,是一款非常优秀的全文搜索引擎。

    solr5.5.4全文搜索服务器

    Solr是一个高性能,采用Java5开发,...同时对其进行了扩展,提供了比Lucene更为丰富的查询语言,同时实现了可配置、可扩展并对查询性能进行了优化,并且提供了一个完善的功能管理界面,是一款非常优秀的全文搜索引擎。

    solr教程从入门到精通(solr5搜索引擎)

    Solr 是Apache下的一个顶级开源项目,采用Java开发,它是基于Lucene的全文搜索服务器。Solr提供了比Lucene更为丰富的查询语言,同时实现了可配置、可扩展,并对索引、搜索性能进行了优化。

    开源企业搜索引擎solr的应用教程

    重点讲解了solr的配置和使用,功能的介绍,配合nutch的使用

    已编译版本solr-8.11.2.tgz

    并对其进行了扩展,提供了比Lucene更为丰富的查询语言,同时实现了可配置,可扩展并对查询性能进行了优化,提供了一个完善的功能管理页面,是一款非常优秀的全文搜索引擎。 3,solr工作方式 文档通过http利用xml加...

    SOLR的应用教程

    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 字段...

Global site tag (gtag.js) - Google Analytics