热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Solr添加文档到索引

solr添加文档非常方便,不用像Lucene那样一个一个添加Field,省去了很多的麻烦下面看操作方法一:privatestaticStringURI"http:localh

solr添加文档非常方便,不用像Lucene那样一个一个添加Field,省去了很多的麻烦下面看操作

方法一:

private static String URI = "http://localhost:8080/solr/";
 
     private CommonsHttpSolrServer httpSolrServer = null;
 
     @Before
     public void init() {
         try {
             httpSolrServer = new CommonsHttpSolrServer(URI);
         } catch (MalformedURLException e) {
             e.printStackTrace();
         }
     }
 
     @Test
     public void test1() {
         try {
             SolrInputDocument document = new SolrInputDocument();
             document.addField("id", "1");
             document.addField("news_title", "这是我的第一个solr程序");
             document.addField("news_content", "希望能够运行起来");
             httpSolrServer.add(document);
             httpSolrServer.commit();
         } catch (SolrServerException e) {
             e.printStackTrace();
         } catch (IOException e) {
             e.printStackTrace();
         }

     }

Note:id为唯一,不可重复,如果重复,solr会自动将索引中id相同的元素更新为现在的属性
域的名称可以在schema.xml的Field中设置,默认的有很多Field,我们也可以使用默认的

   <field name="news_title" type="textComplex" indexed="true" stored="true" />
<field name="news_content" type="textComplex" indexed="true" sotred="true" />

 

方法2:直接添加对象

2.1 定义对象

package com.solr.entity;
 
 import org.apache.solr.client.solrj.beans.Field;
 
 public class News {
     private String id;
     private String title;
     private String content;
 
     public News(){}
     
     public News(String id, String title, String content) {
         this.id = id;
         this.title = title;
         this.cOntent= content;
     }
 
     public String getId() {
         return id;
     }
 
     @Field
     public void setId(String id) {
         this.id = id;
     }
 
     public String getTitle() {
         return title;
     }
 
     @Field("news_title")
     public void setTitle(String title) {
         this.title = title;
     }
 
     public String getContent() {
         return content;
     }
 
     @Field("news_content")
     public void setContent(String content) {
         this.cOntent= content;
     }
 
 }

2.2 添加对象到索引

@Test
     public void test2() {
         try {
             List list = new ArrayList();
             News news1 = new News("2", "title2", "content2");
             list.add(news1);
             News news2 = new News("3", "title3", "content3");
             list.add(news2);
 
             httpSolrServer.addBeans(list);
             httpSolrServer.commit();
         } catch (SolrServerException e) {
             e.printStackTrace();
         } catch (IOException e) {
             e.printStackTrace();
         }
     }

Note:如果对象的某个域里面的属性为数组,我们需要在schema.xml的Field中设置 multiValued="true"



推荐阅读
  • 一个建表一个执行crud操作建表代码importandroid.content.Context;importandroid.database.sqlite.SQLiteDat ... [详细]
  • C#实现文件的压缩与解压
    2019独角兽企业重金招聘Python工程师标准一、准备工作1、下载ICSharpCode.SharpZipLib.dll文件2、项目中引用这个dll二、文件压缩与解压共用类 ... [详细]
  • Spring Data JdbcTemplate 入门指南
    本文将介绍如何使用 Spring JdbcTemplate 进行数据库操作,包括查询和插入数据。我们将通过一个学生表的示例来演示具体步骤。 ... [详细]
  • Hadoop的文件操作位于包org.apache.hadoop.fs里面,能够进行新建、删除、修改等操作。比较重要的几个类:(1)Configurati ... [详细]
  • Spring – Bean Life Cycle
    Spring – Bean Life Cycle ... [详细]
  • 本文介绍了在 Java 编程中遇到的一个常见错误:对象无法转换为 long 类型,并提供了详细的解决方案。 ... [详细]
  • oracle c3p0 dword 60,web_day10 dbcp c3p0 dbutils
    createdatabasemydbcharactersetutf8;alertdatabasemydbcharactersetutf8;1.自定义连接池为了不去经常创建连接和释放 ... [详细]
  • 使用Tkinter构建51Ape无损音乐爬虫UI
    本文介绍了如何使用Python的内置模块Tkinter来构建一个简单的用户界面,用于爬取51Ape网站上的无损音乐百度云链接。虽然Tkinter入门相对简单,但在实际开发过程中由于文档不足可能会带来一些不便。 ... [详细]
  • 本文介绍了 Go 语言中的高性能、可扩展、轻量级 Web 框架 Echo。Echo 框架简单易用,仅需几行代码即可启动一个高性能 HTTP 服务。 ... [详细]
  • Cookie学习小结
    Cookie学习小结 ... [详细]
  • 本文将介绍如何在混合开发(Hybrid)应用中实现Native与HTML5的交互,包括基本概念、学习目标以及具体的实现步骤。 ... [详细]
  • 我有一个从C项目编译的.o文件,该文件引用了名为init_static_pool ... [详细]
  • Android 自定义 RecycleView 左滑上下分层示例代码
    为了满足项目需求,需要在多个场景中实现左滑删除功能,并且后续可能在列表项中增加其他功能。虽然网络上有很多左滑删除的示例,但大多数封装不够完善。因此,我们尝试自己封装一个更加灵活和通用的解决方案。 ... [详细]
  • 如果应用程序经常播放密集、急促而又短暂的音效(如游戏音效)那么使用MediaPlayer显得有些不太适合了。因为MediaPlayer存在如下缺点:1)延时时间较长,且资源占用率高 ... [详细]
  • DAO(Data Access Object)模式是一种用于抽象和封装所有对数据库或其他持久化机制访问的方法,它通过提供一个统一的接口来隐藏底层数据访问的复杂性。 ... [详细]
author-avatar
jzcoijawlkmlzkm_307
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有