solrsolr 多张表的配置问题,你回答的 uinquekey 一样导致数据更新

solr  时间:2021-08-25  阅读:()

java web 怎么用solr

展开全部 1、将解压包中的solr-4.7.1/dist/solr-4.7.1.war复制到tomcat_dir/webapps/目录,并命名为solr.war。

2、将solr-4.7.1/example/lib/ext/目录下的jar文件复制到tomcat/lib目录下,将solr-4.7.1/example/resources/下的log4j.properties文件复制到tomcat_dir/lib目录下; 切把 solr-4.7.1/example/solr,复制到tomcat_dir/bin下。

3、修改tomcat_dir/conf/server.xml connectionTimeout="20000" redirectPort="8443" URIEncoding="UTF-8" /> 4、创建solr.xml,存放在路径:tomcat/conf/Catalina/localhost/solr.xml,内容: debug="0" crossContext="true"> PS:上面的docBase和value路径中不能存在中文字符,否则会出现404错误。

5、将C:Tomcat 7.0webapps下的solr.war包,启动项目解压;然后再添加几个jar包: solr-4.7.1distsolr-dataimporthandler-4.7.1.jar; solr-4.7.1distsolr-dataimporthandler-extras-4.7.1.jar; 还要加载数据库驱动包:mysql-connector-java-3.1.13-bin.jar 6、在C:Tomcat 7.0insolrcollection1conf 下的solrconfig.xml增加以下数据库配置: data-config.xml 7、将tomcatinsolrcollection1conf下增加data-config.xml文件,内容如下: driver=&.mysql.jdbc.Driver" url="jdbc:mysql://192.168.1.221:3306/tmsdb" user="root" password="123456"/> 8、增加中文分词器,ik-analyzer的配置如下: ①目前的中文分词主要有两种 1,基于中科院ICTCLAS的隐式马尔科夫hhmm算法的中文分词器,例如等。

(不支持自定义扩展词库) 2,基于正向迭代最细粒度切分算法(正向最大匹配并且最细分词)例如IK,庖丁等(支持自定义扩展词库) 安装分词前,可以去下载IK的分词包 : IK-Analyzer-4.7.1-0.0.1-SNAPSHOT.jar 下载完毕后,将此包放进tomcatsolr的WEB-INFlib下面:tomcatwebappssolrWEB-INFlib 。

下面需要在solr的schemal.xml进行分词器注册: 最后还得配置一个引用字段就OK了 ②它的安装部署十分简单,将IKAnalyzer2012.jar部署亍项目的lib目录中;IKAnalyzer.cfg.xml不word.dic文件放置在class根目录(对于web项目,通常是WEB-I NF/classes目彔,同hibernate、log4j等配置文件相同)下即可 ;然后配置solr4.7中schema.xml配置解析器: …… ……

如何对solr建立的索引进行搜索

以下资料整理自网络,以及查看solr帮助文档。

主要分为两部分,第一部分是对《db-data-config.xml》的配置内容的讲解(属于高级内容),第二部分是DataImportHandler(属于基础),第三部分是对db-data-config.xml的进阶   第一部分是对《db-data-config.xml》   query是获取全部数据的SQL deltaImportQuery是获取增量数据时使用的SQL deltaQuery是获取pk的SQL parentDeltaQuery是获取父Entity的pk的SQL   Full Import工作原理: 执行本Entity的Query,获取所有数据; 针对每个行数据Row,获取pk,组装子Entity的Query; 执行子Entity的Query,获取子Entity的数据。

  Delta Import工作原理: 查找子Entity,直到没有为止; 执行Entity的deltaQuery,获取变化数据的pk; 合并子Entity parentDeltaQuery得到的pk; 针对每一个pk Row,组装父Entity的parentDeltaQuery; 执行parentDeltaQuery,获取父Entity的pk; 执行deltaImportQuery,获取自身的数据; 如果没有deltaImportQuery,就组装Query   限制: 子Entity的query必须引用父Entity的pk 子Entity的parentDeltaQuery必须引用自己的pk 子Entity的parentDeltaQuery必须返回父Entity的pk deltaImportQuery引用的必须是自己的pk   第二部分是DataImportHandler   关于DataImportHandler的具体使用方法,详见下文,如果你英文超级好,那看这个链接吧:/solr/DataImportHandler   大多数的应用程序将数据存储在关系数据库、xml文件中。

对这样的数据进行搜索是很常见的应用。

所谓的DataImportHandler提供一种可配置的方式向solr导入数据,可以一次全部导入,也可以增量导入。

  概览   目标   能够读取关系数据库中的数据。

  通过可配置的方式,能够将数据库中多列、多表的数据生成solr文档   能够通过solr文档更新solr   提供 通过配置文件就能够导入所有数据的能力   能够发现并处理 由insert、update带来的变化(我们假定在表中有一个叫做“last-modified的列”)   能够配置 “完全导入”和“增量导入”的时间   让读取xml文件,并建立索引成为可配置。

  能够将 其他的数据源(例如:ftp,scp,etc)或者其他格式的文档(Json,csv)以插件的形式集成到项目中。

  设计思路   这个Handler首先要在solrconfig.xml文件中配置下,如下所示。

  <requestHandler name="/dataimport" class=&.apache.solr.handler.dataimport.DataImportHandler"> <lst name="defaults"> <str name="config">/home/username/data-config.xml</str> </lst> </requestHandler>   从它的名字上,我们或许也可以猜到, DataImportHandler正是requestHandler的实现。

我们一共需要在两个地方配置文件中进行一些配置。

  solrconfig.xml 。

data-config.xml必须在这个文件中配置,datasource也可以。

不过,一般将datasource放在data-config.xml文件中。

  data-config.xml   怎样获取数据?(查询语句、url等等)   要读什么样的数据(关系数据库中的列、或者xml的域)   做什么样的处理(修改/添加/删除)   跟关系数据库一起使用   下面几个步骤是必要的.   定义一个data-config.xml 文件,并这个它的路径配置到solrconfig.xml 中关于DataImportHandler的配置中。

  给出Connection的信息(假设你选择在solrconfig中配置datasource)   打开DataImportHandler页面去验证,是否该配置的都配置好了。

http://localhost:8983/solr/dataimport   使用“完全导入”命令将数据从数据库中导出,并提交给solr建立索引   使用“增量导入”命令对数据库发生的变化的数据导出,并提交给solr建立索引。

  配置数据源   将dataSource标签直接添加到dataConfig下面,即成为dataConfig的子元素.   <dataSource type="JdbcDataSource" driver=&.mysql.jdbc.Driver" url="jdbc:mysql://localhost/dbname" user="db_username" password="db_password"/>   数据源也可以配置在solrconfig.xml中   属性type 指定了实现的类型。

它是可选的。

默认的实现是JdbcDataSource。

  属性 name 是datasources的名字,当有多个datasources时,可以使用name属性加以区分   其他的属性都是随意的,根据你使用的DataSource实现而定。

  当然 你也可以实现自己的DataSource。

  多数据源   一个配置文件可以配置多个数据源。

增加一个dataSource元素就可以增加一个数据源了。

name属性可以区分不同的数据源。

如果配置了多于一个的数据源,那么要注意将name配置成唯一的。

  例如:   <dataSource type="JdbcDataSource" name="ds-1" driver=&.mysql.jdbc.Driver" url="jdbc:mysql://db1-host/dbname" user="db_username" password="db_password"/> <dataSource type="JdbcDataSource" name="ds-2" driver=&.mysql.jdbc.Driver" url="jdbc:mysql://db2-host/dbname" user="db_username" password="db_password"/> 然后这样使用 .. <entity name="one" dataSource="ds-1" ...> .. </entity> <entity name="two" dataSource="ds-2" ...> .. </entity> ..   配置JdbcDataSource JdbcDataSource中的属性有   driver(必需的):jdbc驱动名称   url(必需的):jdbc链接   user:用户名   password:密码   批量大小:jdbc链接中的批量大小   任何其他的在JdbcDataSource中配置的属性,都会被直接传给jdbc driver   配置data-config.xml   solr document是schema,它的域上的值可能来自于多个表.   data-config.xml的根元素是document。

一个document元素代表了一种文档。

一个document元素中包含了一个或者多个root实体。

一个root实体包含着一些子实体,这些子实体能够包含其他的实体。

实体就是,关系数据库上的表或者视图。

每个实体都能够包含多个域,每个域对应着数据库返回结果中的一列。

域的名字跟列的名字默认是一样的。

如果一个列的名字跟solr field的名字不一样,那么属性name就应该要给出。

其他的需要的属性在solrschema.xml文件中配置。

  为了能够从数据库中取得想要的数据,我们的设计支持标准sql规范。

这使得用户能够使用他任何想要的sql语句。

root实体是一个中心表,使用它的列可以把表连接在一起。

  dataconfig的结构   dataconfig的结构不是一成不变的,entity和field元素中的属性是随意的,这主要取决于processor和transformer。

  以下是entity的默认属性   name(必需的):name是唯一的,用以标识entity   processor:只有当datasource不是RDBMS时才是必需的。

默认值是SqlEntityProcessor   transformer:转换器将会被应用到这个entity上,详情请浏览transformer部分。

  pk:entity的主键,它是可选的,但使用“增量导入”的时候是必需。

它跟schema.xml中定义的uniqueKey没有必然的联系,但它们可以相同。

  rootEntity:默认情况下,document元素下就是根实体了,如果没有根实体的话,直接在实体下面的实体将会被看做跟实体。

对于根实体对应的数据库中返回的数据的每一行,solr都将生成一个document。

  一下是SqlEntityProcessor的属性   query (required) :sql语句   deltaQuery : 只在“增量导入”中使用   parentDeltaQuery : 只在“增量导入”中使用   deletedPkQuery : 只在“增量导入”中使用   deltaImportQuery : (只在“增量导入”中使用) . 如果这个存在,那么它将会在“增量导入”中导入phase时代替query产生作用。

这里有一个命名空间的用法${dataimporter.delta.}详情请看solr1.4.

为什么使用solr

在业务需求下,不支持对多个索引同时进行检索。

当单个索引的检索压力出现效率问题后,再考虑分布式检索,将数据分发到不同的shards上。

如果不是单次检索的运算量瓶颈,而是并发量带来的压力,考虑使用负载均衡。

这里很类似于mongodb,并发压力大作replSet,单库太大做sharding。

solr 多张表的配置问题,你回答的 uinquekey 一样导致数据更新

uniquekey的作用是唯一标识索引,当有插入操作时,若uniquekey的值相同,solr会覆盖前一个索引。

这也是一种优化策略吧。

而给多张表建索引,网上的建议是数据库表新建一个id字段关联索引,但是这样的话,多张表的id得保证唯一性,否则后面的ID相同的数据会覆盖前面的。

目前,我的做法是把uniquekey注释掉。

不完美。

美国多IP站群VPS商家选择考虑因素和可选商家推荐

如今我们很多朋友做网站都比较多的采用站群模式,但是用站群模式我们很多人都知道要拆分到不同IP段。比如我们会选择不同的服务商,不同的机房,至少和我们每个服务器的IP地址差异化。于是,我们很多朋友会选择美国多IP站群VPS商家的产品。美国站群VPS主机商和我们普通的云服务器、VPS还是有区别的,比如站群服务器的IP分布情况,配置技术难度,以及我们成本是比普通的高,商家选择要靠谱的。我们在选择美国多IP...

Tudcloud(月付7.2美元),香港VPS,可选大带宽或不限流量

Tudcloud是一家新开的主机商,提供VPS和独立服务器租用,数据中心在中国香港(VPS和独立服务器)和美国洛杉矶(独立服务器),商家VPS基于KVM架构,开设在香港机房,可以选择限制流量大带宽或者限制带宽不限流量套餐。目前提供8折优惠码,优惠后最低每月7.2美元起。虽然主机商网站为英文界面,但是支付方式仅支付宝和Stripe,可能是国人商家。下面列出部分VPS主机套餐配置信息。CPU:1cor...

虎跃云-物理机16H/32G/50M山东枣庄高防BGP服务器低至550元每月!

虎跃科技怎么样?虎跃科技(虎跃云)是一家成立于2017年的国内专业服务商,专业主营云服务器和独立服务器(物理机)高防机房有着高端华为T级清洗能力,目前产品地区有:山东,江苏,浙江等多地区云服务器和独立服务器,今天虎跃云给大家带来了优惠活动,为了更好的促销,枣庄高防BGP服务器最高配置16核32G仅需550元/月,有需要的小伙伴可以来看看哦!产品可以支持24H无条件退款(活动产品退款请以活动规则为准...

solr为你推荐
表单控件在网页中创建一个表单,表单中包含各种表单控件,利用表格对各个控件以及输入提示文字进行布局权限表用户,权限,角色表怎么设计第三方接口支付宝第三方接口如何实现?增值税专用发票和增值税普通发票的区别普通增值税发票和专用增值税发票有区别吗?文件保护vivo手机文件被保护现在网现在网上有通过视频传病毒的,那是网站有毒还是播放器有毒还是视频有毒?支付宝安全证书下载在网吧可以下载支付宝安全证书?网站数据分析报告网站流量统计分析的页面浏览数分析网通玩电信游戏卡怎么办我的网是网通,我玩电信区的游戏,总是卡,怎么办呢解码器有什么用监控解码器是指什么?
便宜域名注册 arvixe mach5 搜狗12306抢票助手 七夕快乐英语 香港亚马逊 监控服务器 中国域名 稳定空间 腾讯服务器 server2008 bwg tracert 留言板 免费php空间申请 ddos攻击器 国内免备案空间 免费网络电视软件 usb大容量存储设备 **tp服务器是什么 更多