关于solr:Solr-811入门教程3数据库导入数据

数据库导入数据生产环境下咱们个别须要从数据库中导入数据。 筹备测试数据建一个solrtest的表 CREATE TABLE `solrtest` ( `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键', `name` varchar(255) DEFAULT NULL COMMENT '姓名', `age` tinyint(3) DEFAULT NULL COMMENT '年龄', `description` varchar(1000) DEFAULT NULL COMMENT '介绍', `createTime` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创立工夫', `updateTime` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '更新工夫', PRIMARY KEY (`id`)) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8导入几条数据 insert into `solrtest`(`id`,`name`,`age`,`description`,`createTime`,`updateTime`) values (1,'张三',21,'大家好,欢送大家来到这里','2022-09-26 10:23:21','2022-09-26 10:23:24'),(2,'李四',22,'欢送欢送','2022-09-26 10:23:27','2022-09-26 10:23:29'),(3,'王五',23,'热烈欢迎','2022-09-26 10:23:37','2022-09-26 10:23:39');配置导入处理器官网文档上说,数据导入处理器9.0就会移除。这个性能将被合并到第三方插件dataimporthandler中。 The Data Import Handler is deprecated and will be removed in 9.0. ...

October 31, 2022 · 1 min · jiezi

关于solr:Solr-811入门教程2创建core

新建core增加core命令增加应用命令比较简单 ~$ bin/solr create -c mytest[core名称]这样就增加完了。Core Admin就能够看到了。 手动增加手动增加绝对简单一些,须要提前创立目录,而后通过可视化界面增加 1、到server\solr(绝对于solr根目录的门路,下同)目录下,先把要创立的core目录提前创立,复制configsets\_default下的conf到core目录。 ~$ cd solr-8.11.2~$ mkdir server/solr/mytest~$ cp -r server/solr/configsets/_default/conf server/solr/mytest/2、点击core的局部,因为限度没有core(核)会呈现增加页面。依照图示增加 增加实现,点击“Core Admin”能够看到增加的核 配置solr字段增加字段有2种办法,能够通过web页面增加,也能够间接批改schema文件增加。 可视化界面减少通过浏览器的Schema菜单增加 增加字段名称,选中字段类型,增加增加字段即可。https://solr.apache.org/guide/8_11/field-type-definitions-and-properties.html#field-default-properties 属性阐明取值默认值stored是否存储,一个字段是否被存储,取决于你是否想在solr的查问后果中失去它,也就是说你是否想在查问后果中看到它,它将会耗费cpu和io和磁盘空间等资源。true/falsetrueindexed字段是否创立索引,索引的字段是在搜寻的时候能够用它来查问或排序,在lucene中,被索引的字段将会建设倒排表。true/falsetrueuninvertible如果为 true,则示意一个 indexed=“true” docValues="false" 字段在查问时能够用“un-inverted”构建大内存数据结构以代替 DocValues。 出于历史起因,默认为 true,但强烈建议用户将其设置 false 以放弃稳定性,并据须要应用 docValues="true"。true/falsetruedocValues字段的值是否放在面向列的 DocValues 构造中true/falsefalsemultiValued设置为true示意此字段能够存储多个值,意思是这个字段在一个文档中能够存储多个值的内容。true/falsefalserequired是否必须。如果为 true,则 Solr 回绝任何增加没有此字段的文档。true/falsefalsedefault字段的默认值,常常用在字段是必须的,然而有时候又无奈提供的状况,solr就会用默认值代替。如: <field name="recordTime" type="date" indexed="true" stored="true" required="true" default="NOW+8HOUR"/> 标示recordTime如果没有提供,用以后的工夫+8个小时作为recordTime的工夫,加8小时是因为solr默认时区是0时区,依照中国北京工夫(东8区)算,须要加上8个小时。 类型高级属性1.docValue在solr的schema定义中,根本的long、int、double、float类型设置docValue,如下: <fieldType name="long" class="solr.TrieLongField" docValues="true" precisionStep="0" positionIncrementGap="0"/>`当然也能够在字段外面间接定义:<field name="_root_" type="string" indexed="true" stored="false" docValues="false" />solr阐明: 如果此字段应蕴含doc值,则为true。 Doc值为用于分面(faceting),分组,排序和函数查问。 尽管不是required,doc值会使索引加载更快,更多 NRT敌对和更高内存利用率。 但他们有一些 限度:它们目前只受StrField,UUIDField反对 和所有Trie *字段,并且依据字段类型,它们可能要求字段为单值,是必须的或具备默认值 。 docValue值存在正排索引中,只所以在排序的时候成果更好,是因为docValue是依照列存储的,又存在正排索引中,所以能够通过文档ID疾速找到它。 阐明下: lucene的倒排索引是:Term(词)-> 文档ID这样依据相似Hash算法,通过词能够迅速找到文档ID,而后把相干字段取解决。然而也有不利的方面就是如果要进行分组或排序的时候,会遍历取出所有文档的字段,而后在内存中依据排序字段进行排序,十分耗时和占用内存。 设置docValue就构建了正排索引,即文档ID->docValue字段,而且docValue字段又是排好序的,依照列存储的。只是简略阐明。设置docValue在lucene其实是减少一个字段,所以占存储,影响建索引效率。 useDocValuesAsStored:如果这一项设置为true则标示所有docValue为true的字段将被存储,即便它的stored=false。 2.omitNormssolr对这个属性解释的有点拗口,本人了解下,就是如果这个为true,则在索引中不存在这个字段的长度属性。这在给文档打分的时候用的到。 举个例子,一个词语,在两篇文章中,个别认为段的文章比长的文章是不是要更加合乎查问的须要(因为这个词在两篇文章中权重不一样,比方在100个词的文章中,这个词权重为0.01; 在100个词的文章中,这个词权重为0.001),如果是,则须要用长度来增强文档打分的策略,这就是这个属性的作用。Norm 在Lucene中是依照浮点数的模式,只占用一个字节的形式存储的。 疏忽状况: 1、如果你的doc的字段的内容长度大小比拟统一,则能够疏忽。 2、如果在查问后果中,字段内容的长度对你的后果匹配无影响疏忽。 3、须要节俭空间,进步建索引和查问的性能。 应用状况: 1、字段内容长度影响了文档的打分,则须要应用。 在solr中,默认的工夫、string或数字类型,这个属性为true。3.termVectors在solr中,咱们通过查问的内容的词向量和文档中的此向量之间的夹角来求相关性,给文档相关性打分(词向量比较复杂,回头独自写一篇文章来论述)。 solr中有个MoreLikeThis 的性能,当初很多电商的查问外面的找相似就是这个性能,solr利用term Vectors来计算相关度,通常是是利用存储在索引中查问信息计算的,设置termVectors为true,则能够在建索引的时候计算term Vector信息,且保留在索引中。 ...

October 31, 2022 · 1 min · jiezi

关于solr:Solr一键安装入门教程

Solr是一个基于Lucene的Java搜索引擎服务器。Solr 提供了层面搜寻、命中醒目显示并且反对多种输入格局(包含 XML/XSLT 和 JSON 格局)。它易于装置和配置,而且附带了一个基于 HTTP 的治理界面。Solr曾经在泛滥大型的网站中应用,较为成熟和稳固。Solr 包装并扩大了 Lucene,所以Solr的基本上沿用了Lucene的相干术语。更重要的是,Solr 创立的索引与 Lucene 搜索引擎库齐全兼容。通过对Solr 进行适当的配置,某些状况下可能须要进行编码,Solr 能够浏览和应用构建到其余 Lucene 应用程序中的索引。此外,很多 Lucene 工具(如Nutch、 Luke)也能够应用Solr 创立的索引。Solr 具备高度可靠性、可扩展性和耐故障性,提供分布式索引、复制和负载平衡查问、主动故障转换和复原、集中配置等。Solr 为许多世界上最大的互联网网站的搜寻和导航性能提供能源。上面咱们就来学习一下如何简略疾速的装置部署好solr服务 1.找到solr的装置服务可点击试用。 2.装置部署增加节点-抉择版本-填写参数-部署胜利 装置部署过程简略又疾速,具体的装置教程如下:如何增加节点?https://www.bilibili.com/vide...如何装置部署solr?https://www.bilibili.com/vide...

November 1, 2021 · 1 min · jiezi

关于solr:solr基础1入门

一、参考elasticsearch 学习系列目录——更新ing

June 16, 2021 · 1 min · jiezi

关于solr:阿里云lindorm-搜索引擎初识

一、参考elasticsearch 学习系列目录——更新ing

June 10, 2021 · 1 min · jiezi

关于solr:solr基础1入门

一、参考solr 学习系列目录——更新ing solr Tutorial 二、装置部署2.1 环境依赖名称阐明JavaJava8 以上2.2 装置Solr Downloads unzip solr-8.8.2.zip./bin/solr start -e cloud

May 10, 2021 · 1 min · jiezi

关于solr:solr-学习系列目录更新ing

一、根底

May 10, 2021 · 1 min · jiezi

springboot整合solr8一

环境:ubuntu18 + springboot2.0 + solr-8.0.0 第一部分 安装solr先去官网下载solr:Index of /apache/lucene/solr/8.0.0我这里下载的是zip的包,下载之后unzip命令解压得到下列文件: 进入bin目录,执行sudo ./solr -start 命令,这里可能遇到的错误有两个: 会提示找不到JAVA_HOME,解决方法是在solr中加入 export JAVA_HOME='你的JDK路径'即可;root启动需要添加-force参数,错误信息如下: 好吧,再次运行sudo ./solr start -force,运行成功。 solr的默认端口是8983,打开浏览器输入localhost:8983,可以看到solr已经可以访问了~ 第二部分 创建核心(core),并导入mysql数据选择左侧CoreAdmin,再选择Add Core,输入核心的名称和实例路径,后边三个默认就好。 点击Add Core提交信息,这里我遇到了一个错误信息,如下: 意思是在核心目录下找不到相应的配置文件,解决办法:将下图的conf文件夹cope到新创建的core目录下 /usr/local/solr-8.0.0/server/solr/new_core2。 重新点击Add Core,创建成功~ 接下来导入MySQL中的数据,我们会用到Solr自带的DIH(DataImportHandler)去进行数据导入。这一步需要导入三个jar包(solr-dataimporthandler-8.0.0.jar、olr-dataimporthandler-extras-8.0.0.jar和mysql-connector-java-8.0.15.jar),编辑三个文件(db-data-confg.xml 、solrconfig.xml以及managed-schema)。 导入jar包进入到/usr/local/solr-8.0.0/dist目录,将solr-dataimporthandler-8.0.0.jar和solr-dataimporthandler-extras-8.0.0.jar复制到/usr/local/solr-8.0.0/server/solr-webapp/webapp/WEB-INF/lib,再去mvn仓库下载一个mysql-connector-java的包,也复制到这里。 编辑配置文件首先需要我们进入到/usr/local/solr-8.0.0/example/example-DIH/solr/db/conf 目录,拷贝db-data-config.xml 到我们刚才复制的conf文件夹内/usr/local/solr-8.0.0/server/solr/new_core2/conf,可以随意修改一个文件名,也可以用他默认的,如下,我改成了mysql-db.xml: 编辑该文件vim mysql-db.xml,将原本的内容修改成我们自己的需求:修改dateSource: <dataSource driver="com.mysql.jdbc.Driver" url="jdbc:mysql://127.0.0.1:3306/dbname" user="root" password="" />加入entity: 接着退出,编辑另一个文件solrconfig.xml,添加如下信息: <requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler"> <lst name="defaults"> <str name="config">mysql-db.xml</str> </lst> </requestHandler>mysql-db.xml就是刚才copy的db-data-config.xml的文件名。 保存退出,编辑managed-schema,加入<!-- custom fields--><field name="title" type="string" indexed="true" stored="true"/><field name="content" type="string" indexed="true" stored="true"/> <field name="labels" type="string" indexed="true" stored="true"/> 保存 --> 退出 --> 重启solr, sudo ./solr restart -force 再次打开localhost:8983管理页面,选择新创建的核心 --> 选择 DateImport --> 选择 full-import 全量导入 --> 提交 --> 点击Refresh刷新,可以看到导入成功的提示: ...

June 4, 2019 · 1 min · jiezi

solr学习笔记

1 下载地址 http://lucene.apache.org/solr/ wget https://mirrors.tuna.tsinghua...tar -zxvf solr-8.1.0.tgz2 运行 停止 切换到目录(solr-8.1.0/bin) ./solr start -force ./solr start -p 9529 -force(指定端口) ./solr stop -all 启动错误提示 Your Max Processes Limit is currently 将solr-8.1.0/bin/solr.in.sh文件中,SOLR_ULIMIT_CHECKS设置为false 浏览器输入http://127.0.0.1:9529/solr3 修改时区 修改文件 solr-8.1.0/bin/solr.in.sh SOLR_TIMEZONE=PRC4 创建core实例 首先去目录solr-8.1.0/server/solr/ 创建一个名字为new_core的文件夹(如:fgou)然后拷贝把目录solr-8.1.0/server/configsets/basic_configs下的conf目录拷贝到fgou目录下 cp -r /usr/local/src/solr-8.1.0/server/solr/configsets/_default/conf/usr/local/src/solr-8.1.0/server/solr/fgou/ 然后再点击创建即可 5 配置中文分词 下载IK分词器 https://pan.baidu.com/s/1fZ52... 提取码:f76cIKAnalyzer下载后解压会有如下文件 把核心jar文件复制到solr WEB应用的lib文件夹下 把配置文件和词库等文件复制到WEB应用的classes文件夹下,如果子WEB-INF下没有这个文件夹自己创建即可 在配置文件managed-schema中增加如下配置 <fieldType name="fgou_ik" class="solr.TextField"> <analyzer type="index"> <tokenizer class="org.wltea.analyzer.lucene.IKTokenizerFactory" useSmart="false"/> </analyzer> <analyzer type="query"> <tokenizer class="org.wltea.analyzer.lucene.IKTokenizerFactory" useSmart="true"/> </analyzer></fieldType> 重启服务 这样就可以选择到ik分词了,为gname创建个6 导入MYSQL数据首先在D:serversolr-7.4.0dist目录下复制如下的jar包复制到 D:serversolr-7.4.0serversolr-webappwebappWEB-INFlib 再到 https://search.maven.org/sear... 复制到D:serversolr-7.4.0serversolr-webappwebappWEB-INFlib目录下 在D:serversolr-7.4.0serversolrfgouconfsolrconfig.xml配置数据库文件信息 <requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler"> ...

May 18, 2019 · 2 min · jiezi

solr-创建core

直接使用 solr create -c coreName 创建core,会在server文件夹下的solr文件夹下得到新创建的core 配置新建的core中,的conf文件夹下的solrconfig.xml文件,在新建的core中,的conf文件夹啊下,在solrconfig.xml文件后面加入 <!--引入DataImportHandler类的jar--><lib dir="${solr.install.dir:../../../..}/dist/" regex="solr-dataimporthandler-.*\.jar" /> <requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler"> <lst name="defaults"> <str name="config">db-data-config.xml</str> </lst> </requestHandler>这里的配置表示mycore的数据导入使用solr的DataImportHandler,而这个handler所在的jar位于E:solr-7.4.0solr-7.4.0dist目录里面,解压的时候就有,通过配置lib节点来进行引入。 配置managed-schema文件,与前面的solrconfig.xml文件在同一个目录下 <!--分词器--> <fieldType name="content_ik" class="solr.TextField"> <analyzer type="index" isMaxWordLength="false" class="org.wltea.analyzer.lucene.IKAnalyzer"/> <analyzer type="query" isMaxWordLength="true" class="org.wltea.analyzer.lucene.IKAnalyzer"/> </fieldType> <!--添加对应于数据库字段的field--> <!--配置从数据库导入到sorl中的数据的字段内容,所以每次要从数据库导入什么就需要配置什么--> <!--name:指定域的名称,indexed:是否索引,type:指定域的类型,stored:是否存储,required:是否必须--> <field name="product_name" type="string" indexed="true" stored="true"/> <field name="product_price" type="string" indexed="true" stored="true"/> <field name="product_description" type="content_ik" indexed="true" stored="true" multiValued="false" /> <field name="product_picture" type="string" indexed="true" stored="true"/> <field name="product_catalog_name" type="content_ik" indexed="true" stored="true" multiValued="false" /> <!--设置部分字段搜索,当搜索条件为product_keywords时,会搜索以下所有字段匹配数据,--> <!--multiValued:是否多值,比如商品信息中,一个商品有多张图片,一个Field想存储多个值的话,必须将multiValued设置为true--> <field name="product_keywords" type="content_ik" indexed="true" stored="true" multiValued="true" /> <copyField source="product_name" dest="product_keywords" /> <copyField source="product_description" dest="product_keywords" /> <copyField source="product_price" dest="product_keywords"/> <copyField source="product_catalog_name" dest="product_keywords"/>需要注意的是,在设置了stored="ture",的时候,会将数据保存到solr中,所以,即使设置indexed="false",不建立索引,在搜索的时候,也能搜索到。配置db-data-config.xml,这个是关联数据库的,可以将数据库中的数据,保存到solr中,要加mysql的jar包 <?xml version="1.0" encoding="UTF-8" ?><dataConfig> <dataSource driver="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost:3306/solr?useSSL=false" user="root" password="123456"/> <document> <entity name="product" query="SELECT * FROM product"> <field column="pid" name="id" /> <field column="name" name="product_name" /> <field column="catalog_name" name="product_catalog_name" /> <field column="price" name="product_price" /> <field column="description" name="product_description" /> <field column="picture" name="product_picture" /> </entity> </document></dataConfig>三个文件的位置:最后测试下,导入数据库中的数据 搜索可以成功得到数据库的数据,以及搜索到数据在配置core中的文件的时候,一开始,我是直接复制的solr{home}exampleexample-DIHsolrdb下的文件 然后进行的配置。其他一切都正常,但是在搜索单个字符的时候,会搜索不到 ...

April 28, 2019 · 1 min · jiezi