lr

阅读 / 问答 / 标签

i was told that the aircraft(redesign)already

I was told that the aircraft _________________ already. (redesign)

安装 Office 2013 时提示找不到 Office.zh-cnOfficeLR.cab

安装路径修改成跟office2013不一个盘就行,我的自定义安装路径到D盘就行了。。。。

tallrst towers怎么读

tallrst towers应该是 tallest towers 最高的塔tallest英 ["tu0254:lu026ast] 美 ["tu0254:lu026ast] towers英 ["tau028au0259z] 美 ["tau028au0259z]

急求 Vce(本兮) lrc歌词

支离破碎。词曲唱:本兮jong本兮:是否回得来支离破碎的残骸彼此感情的依赖为何只剩下空白怎样才能找回来对爱还一直期待走到最后才明白再爱也只是伤害jong:第一次牵手又一次邂逅现在是第几次的分开让我难以承受此刻的束缚 心已被锁住哪里才能寻找到我们共同踏过的路so baby我也知道不能再继续爱你用尽全力却换来如此结局我抗拒 这样爱你 却无能为力放任彼此的遗憾像流星一样逝去本兮:还记得 第一次say hello广场上手牵着走曾经的记忆我从没想过这样放它走你给过我的爱没有人能取代其实彼此早已看开明明只是依赖本兮:是否回得来支离破碎的残骸彼此感情的依赖为何只剩下空白怎样才能找回来对爱还一直期待走到最后才明白再爱也只是伤害jong:这样的结局我们都SAY WHY从前的那段记忆在脑中如何更改把所有的事情 都放开填补自己失去的 空白接受这无奈 的意外撕开 记忆的 缎带I only say goodbye我收回真爱 不在悔改一步一步的把它忘怀悼念逝去的爱 你不在我的爱依然会回来本兮:不知道该怎么样结束我的感觉有点失落从分开到现在我们都在被记忆所折磨曾经编织的谎言都已经消失不见再见吧 baby或许一开始我们就爱错本兮:是否回得来支离破碎的残骸彼此感情的依赖为何只剩下空白怎样才能找回来对爱还一直期待走到最后才明白再爱也只是伤害

DanielRovaij人物介绍

DanielRovaijDanielRovaij是一名演员,主要作品有《付出》。外文名:DanielRovaij职业:演员代表作品:《付出》合作人物:LaurenceLamers

单词 silren 什么意思,是不是希腊神话里什么神仙妖怪之类的。

是人头鸟身善于以声音(歌唱)迷惑在海上航行的人的妖怪,往往人们不堪诱惑被赛壬迷惑被她吃掉。但是奥德修斯在返回伊萨卡的途中,用蜂蜡堵住了船员的耳朵,他自己则把自己绑在了桅杆上欣赏赛壬的歌唱,最后顺利地通过了赛壬统治的海域。

WLK LR 利爪之击和霸权印记怎么样?

利爪之击好东西,基本可以用到毕业如果把急速换成暴击或者命中更极品,但作为老2掉的武器自然不能太多的奢望霸权印记不怎么样,如果你实在命中不足而且牌子溢出可以换但等你装备成型后这个真的很鸡肋天谴之石都比这个好

请问nobel用汉语是什么品牌的手表?下面一行英文是sAPPHlRE,这是什么意思?价值多少钱?

诺贝尔,瑞士的品牌,SAPPHIRE是蓝宝石的意思,指的手表采用的蓝宝石玻璃镜面,比较耐磨。石英表的话在1500-2500,机械表在3-6K.

Ofcourse和allright区别

allright释义准确无误地,ofcourse释义当然,自然。比较级:就是将二者进行比较产生的词形,是由形容词原级转化而来的,一般是在原级后面加er,也有一些不规则的转化,不如比如good—better,bad—worse等。最高级:最高级表示三者或三者以上的人或物进行比较时,用最高级。形容词的最高级前面要加定冠词the,副词最高级前面的the可以省略。他们两者的区别,一是他们适用的人数不同,二是他们的表示方法不同。1.两者比较时用形容词比较级,其结构为“...比较级+than...”。2.在两者之间选择“哪一个更??”时,用句型“Which/Whois+比较级,...or...?”。3.表示“两者之间最??的一个”时,用“the+比较级”。4.表示“越??,越??”时,用“the+比较级,the+比较级”。5.表示“越来越??”时,用“比较级+and+比较级”,多音节词和部分双音节词用“moreandmore+形容词原级”。6.形容词比较级前可以用下列

VlRUS.SHUT.OUT是啥意思?

VlRUS.SHUT.OUT中文意思是:闭嘴,闭嘴

vlrusshutout晚上睡觉时还要配戴吗?

不需要。vlrusshutout晚上睡觉时不需要配戴,蒸汽眼罩是采用先进的自发热控温技术,让空气中的水分与铁粉在眼罩内部发生化学反应,形成发热体,生成出肉眼所无法看到的细微温润的水蒸汽。

LTE中SPR与HLR HSS融合的驱动力有哪些?

【答案】:1、SPR与PCRF分离部署,支持PCC策略数据集中大容量的数据存储2、SPR是核心网的策略数据管理网元,HLR/ HSS/SPR融合能提供核心网数据管理设备持续演进的能力,并且简化了组网结构3、SPR与HLR/HSS融合也是3GPP协议发展趋势,SPR与HLR/HSS共同作为UDC(User Data Convergence)的一部分

motelrocks直邮中国吗

这个是可以直邮到中国的,这个是北美的一个摇滚女装品牌。

为什么solr增量更新修改过的数据在solr中显示不出来了

solr在对数据库表建增量索引时,目前是通过在数据库做一个标志位来区分是否已经建立索引,这样做有些影响效率,每次建索引还附带着更新字段,而且在索引删除时,需要更新字段后才能重新建索引,特麻烦!

docker中solr的solrhome配置

docker中solr的solrhome配置如下:<Context docBase="${the_path_to solr.war}" debug="0" crossContext="true" ><Environment name="solr/home" type="java.lang.String" value="${the_path_to solr_home}" override="true" /></Context>基于环境变量:在${ tomcat_home}/bin/catalina.sh中添加如下环境变量: export JAVA_OPTS="$JAVA_OPTS -Dsolr.solr.home=${the_path_to solr_home}"

利用solr做全文检索,配置完schema.xml,启动项目报错!

你需要在schema.xml里定义<uniqueKey></uniqueKey>

solr为什么加admin.html才能访问到

路径是admin.html,所以就得加admin.html,默认路径可以设置成index.html 就不用加了。也可以把admin.html设置成默认路径。

java端怎么大批量快速向solr提交索引数据

SolrQuery solrQuery = new SolrQuery(); Map map = new HashMap(); map.put(FacetParams.FACET_DATE, "manufacturedate_dt"); map.put(FacetParams.FACET_DATE_START,"2004-01-01T00:00:00Z"); map.put(FacetParams.FACET_DATE_END,"2010-01-01...

solr查询的参数中为什么要有fq过虑查询??不是有q参数就可以了吗?

可能是效率与代码整洁性吧。都是可以实现的。

在使用java操作solr的时候怎么设置wt?

solrj 请求数据不能设置wt,是以java序列化方式返回。

solr高亮显示不完全

应该是在于预留的高亮显示字符数太少,导致被截断。试试使用传入参数的方式来增大字符数,如:hl.fragsize=120

搭建solr集群怎么避免wirte.lock文件的出现

搭建solr集群怎么避免wirte.lock文件的出现最后打开数据库:>alter database open; OK , 问题解决。数据库恢复使用。方法二 :进入oracle清空日志信息,把空间释放出来启动数据库到mount状态: >sqlplus “/as sysdba”>startup mount新起一个终端,用rman进入把归档日志删除命令>rman target/ (只安装了一个oracle10g数据库)命令>crosscheck archivelog all; (列出归档日志信息)命令>delete expired archivelog all; (将上述列出的归档日志删除)命令>exit;此时最好将数据库重新备份一下把数据库的mount状态更改为open状态>alter database open; OK.问题解决,数据库可以使用。 误区: 在系统清空归档目录的日志信息(即物理删除归档日志,或将归档日志转移至别处)不可取,OS虽然删除了,但oracle系统识别不出来已经清空日志,只能进入oracle清空日志信息,把空间释放出来,(方法二);或者是把归档空间设置更大(方法一)。 建议将两种方法结合使用,减少工作量,也避免数据库频繁挂起。同时定时进行数据库完全备份或其他重要数据备份

solr5.5怎么连接oracle数据库

solr5.5怎么连接oracle数据库方法如下:1、启动Navicat,连接->oracle,配置如下:连接名随便起2、Basic连接类型:连接类型有两种,我们先看用Basic的连接方式,此方法适合没有安装Oracle客户端的机器,配置好之后,点连接测试,如果你数据库没有问题,则能连接测试成功。3,TNS连接类型:选择TNS监听连接类型,你首先要安装好oracle客户端,安装完成后,连接数据库时,先配置OCI.dll路径,Navicat->工具>选项>OCI,将oci.dll路径设置成你安装客户端的路径,如本例:D:appAdministratorproduct11.2.0client_2oci.dll,4,还有一步要做,到连接的Oracle数据库目录下找到tnsnames.ora文件,一般路径在D:oracleproduct10.2.0db_1NETWORKADMIN下,将该文件拷贝到你安装的oracle客户端目录下,如D:appAdministratorproduct11.2.0client_1NetworkAdmin nsnames.ora,在连接时就可以直接用TNS方式连接了,程序会自动识别你的网络连接名,如果没有自动识别网络连接名,说明配置的不对,再检查下有说明漏的。5,配置好之后,点连接测试,如果你数据库没有问题,则能连接测试成功。

solr索引库数据存储有时间限制吗?为什么我的solr索引库会自动清空!!!!!

在solr与tomcat整合文章中,我用的索引库是mycore,现在就以这个为例。首先要准备jar包:solr-dataimporthandler-4.8.1.jar、solr-dataimporthandler-extras-4.8.1.jar和mysql-connector-java-5.0.7-bin.jar这三个包到solr的tomcat的webappssolrWEB-INFlib下在这个文件夹的conf下配置两个文件,添加一个文件。先配置solrconfig.xml。在该文件下添加一个新节点。<requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler"><lst name="defaults"><str name="config">data-config.xml</str></lst></requestHandler>在solrconfig.xml的同目录下创建data-config.xml。配置:复制代码<dataConfig><dataSource type="JdbcDataSource"driver="com.mysql.jdbc.Driver"url="jdbc:mysql://localhost:3306/courseman"user="root"password="mysql" /><document><entity name="student"query="SELECT * FROM student"><field column="id" name="id" /><field column="name" name="name" /><field column="gender" name="gender" /><field column="major" name="major" /><field column="grade" name="grade" /></entity></document></dataConfig>复制代码schemal.xml的配置复制代码<?xml version="1.0" ?><!--Licensed to the Apache Software Foundation (ASF) under one or morecontributor license agreements. See the NOTICE file distributed withthis work for additional information regarding copyright ownership.The ASF licenses this file to You under the Apache License, Version 2.0(the "License"); you may not use this file except in compliance withthe License. You may obtain a copy of the License atUnless required by applicable law or agreed to in writing, softwaredistributed under the License is distributed on an "AS IS" BASIS,WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.See the License for the specific language governing permissions andlimitations under the License.--><schema name="example core one" version="1.1"><fieldtype name="string" class="solr.StrField" sortMissingLast="true" omitNorms="true"/><fieldType name="long" class="solr.TrieLongField" precisionStep="0" positionIncrementGap="0"/><fieldType name="int" class="solr.TrieIntField" precisionStep="0" positionIncrementGap="0"/><!-- general --><field name="id" type="int" indexed="true" stored="true" /><field name="gender" type="string" indexed="true" stored="true" /><field name="name" type="string" indexed="true" stored="true" /><field name="major" type="string" indexed="true" stored="true" /><field name="grade" type="string" indexed="true" stored="true" /><field name="_version_" type="long" indexed="true" stored="true"/><!-- field to use to determine and enforce document uniqueness. --><uniqueKey>id</uniqueKey><!-- field for the QueryParser to use when an explicit fieldname is absent --><defaultSearchField>name</defaultSearchField><!-- SolrQueryParser configuration: defaultOperator="AND|OR" --><solrQueryParser defaultOperator="OR"/></schema>复制代码默认的文件不是这样的,稍微改动了一下。field 的type类型是根据fieldtype 的name定义的。class是solr自定义的不能更改。shcema.xml文件的field字段的属性介绍:(1)name:字段名称(2)type:字段类型(此处type不是java类型,而是下面定义的fieldType)(3)indexed:是否索引看true--solr会对这个字段进行索引,只有经过索引的字段才能被搜索、排序等;false--不索引(4)stored:是否存储看true--存储,当我们需要在页面显示此字段时,应设为true,否则false。(5)required:是否必须看true--此字段为必需,如果此字段的内容为空,会报异常;false--不是必需(6)multiValued:此字段是否可以保存多个值看(7)omitNorms:是否对此字段进行解析看有时候我们想通过某个字段的完全匹配来查询信息,那么设置 indexed="true"、omitNorms="true"。(8)default:设置默认值有这样一个FieldType描述:<fieldType name="text_general" positionIncrementGap="100"><analyzer type="index"><tokenizer/><filter ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true" /><filter/></analyzer><analyzer type="query"><tokenizer/><filter ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true" /><filter synonyms="synonyms.txt" ignoreCase="true" expand="true"/><filter/></analyzer></fieldType>属性说明:(1)name:类型名称,<field>中的type引用的就是这个name(2)class:solr自定义的类型(3)<analyzer type="index">定义建立索引时使用的分词器及过滤器(4)<analyzer type="query">定义搜索时所使用的分词器及过滤器(5)<tokenizer/>定义分词器(6)<filter/>定义过滤器uniqueKey属性<uniqueKey>id</uniqueKey>类似于数据表数据的id,solr索引库中最好定义一个用于标示document唯一性的字段,此字段主要用于删除document。defaultSearchField属性就是你在做query搜寻时若不指定特定栏位做检索时, Solr就会只查这个栏位.<defaultSearchField>default</defaultSearchField>copyField属性是用来复制你一个栏位里的值到另一栏位用. 如你可以将name里的东西copy到major里, 这样solr做检索时也会检索到name里的东西.<copyField source="name" dest="major"/>现在可以将数据库的数据导入solr了。点击Execute就可以了。

solr在配置dataimport 页面访问solr时报错500 如图

5.0始solr采用自发现模式(discovery区别于传统模式legacy)Solr自找安装目录、或solr_home配置文件:core.properties并根据面name属性初始化相于coresolr.xml仍定义些配置参数core本身定义文件Solr递归搜索所solrsolr_home目录目录目录发现core.properties停止搜索前目录所目录转向同级目录搜索所面两配置第效: ./cores/core一/core.properties ./cores/core一/coremore/core5/core.properties 面三配置都效: ./cores/somecores/core一/core.properties ./cores/somecores/core二/core.properties ./cores/othercores/core三/core.properties core.properties文件代表core文件内容空候solr该文件所目录作name比跟./cores/core一/core.properties应core namecore一;instanceDir./cores/core一;dataDir./cores/core一/data等等 core.properties配置参数

请教关于solr schema.xml fieldtype 的几个属性含义的问题

solr schema.xml FieldType属性详解fieldType 公共属性:name:标识。class:行为对应的类可选的属性:sortMissingLast和sortMissingFirst两个属性是用在可以内在使用String排序的类型上(包括:string,boolean,sint,slong,sfloat,sdouble,pdate)。sortMissingLast=”true”:没有该field的数据排在有该field的数据之后,而不管请求时的排序规则。sortMissingFirst=”true”:没有该field的数据排在有该field的数据之前,而不管请求时的排序规则。indexed:是否被用来建立索引(关系到搜索和排序)stored:是否储存compressed:[false],是否使用gzip压缩(只有TextField和StrField可以压缩)mutiValued:是否包含多个值,即一个名字可以被多个document所用。omitNorms:这是个高级选项。设置为true,省略与这一field相关的规范(这将禁用长度规范化和索引时间权重( index-time boosting for the field),并节省一些内存)。仅仅用在全文本field。positionIncrementGap=N :可选属性,定义在同一个文档中此类型数据的空白间隔数,避免短语匹配错误。

solr查询时怎样达到mysql的union效果

可以试试:使用SolrQuery对象,SolrQuery solrQuery = new SolrQuery();//组装查询条件solrQuery.setQuery("*:*");String key = "java3";solrQuery.addFilterQuery("content:" + "*"+key+"*" );试试吧

solr中q值怎么实现or查询

solr query和filter执行顺序: 1,fq首先在cache中查找,如果命中,则返回DocSet 2,如果没有命中,则在索引中查找,返回DocSet并cache 3,1,2步的DocSet合并为一个DocSet 4,q的查询结果也被传递过来,选取两个结果集的相同Document ID

怎么在centos中查看solr有没有启动

CentOS使用systemd服务管理程序来管理服务1、systemd的服务管理程序介绍:systemctl是主要的工具,它融合之前service和chkconfig的功能于一体。可以使用它永久性或只在当前会话中启用/禁用服务。systemctl可以列出正在运行的服务状态:systemd-cgls以树形列出正在运行的进程,它可以递归显示控制组内容。2、启动/关闭、启用/禁用服务启动一个服务:systemctlstartpostfix.service关闭一个服务:systemctlstoppostfix.service重启一个服务:systemctlrestartpostfix.service显示一个服务的状态:systemctlstatuspostfix.service在开机时启用一个服务:systemctlenablepostfix.service在开机时禁用一个服务:systemctldisablepostfix.service查看服务是否开机启动:systemctlis-enabledpostfix.service;echo$?查看已启动的服务列表:systemctllist-unit-files|grepenabled

solr如何让全词匹配结果在最前面

先,只要在搜索的时候增加title字段的权重即可,如果改动较小的情况下,updatetime靠前,标题匹配靠前,这个比较容易sort=updatetime desc 其次,如果想绝对的靠前

solr每个数据节点最多能存多少,多大的数据

  单个数据节点并无数据量的限制,整个集群能存多少数据取决于名称节点的内存有多大,所存储的单个文件的大小取决于整个集群所有数据节点的存储容量之和有多大

淘宝和京东的搜索是用solr实现的么

我觉得,去天涯问看看~大概了解方法吧.!.真的!

正向索引与反向索引(solr)

正向索引(正排索引) :正排表是以文档的ID为关键字,表中记录文档中每个字的位置信息,查找时扫描表中每个文档中字的信息直到找出所有包含查询关键字的文档。 正排表结构如图1所示,这种组织方法在建立索引的时候结构比较简单,建立比较方便且易于维护;因为索引是基于文档建立的,若是有新的文档加入,直接为该文档建立一个新的索引块,挂接在原来索引文件的后面。若是有文档删除,则直接找到该文档号文档对应的索引信息,将其直接删除。但是在查询的时候需对所有的文档进行扫描以确保没有遗漏,这样就使得检索时间大大延长,检索效率低下。 尽管 正排表的工作原理非常的简单 ,但是由于其检索效率太低,除非在特定情况下,否则实用性价值不大。 反向索引(倒排索引) :倒排表以字或词为关键字进行索引,表中关键字所对应的记录表项记录了出现这个字或词的所有文档,一个表项就是一个字表段,它记录该文档的ID和字符在该文档中出现的位置情况。 由于每个字或词对应的文档数量在动态变化,所以倒排表的建立和维护都较为复杂,但是在查询的时候由于可以一次得到查询关键字所对应的所有文档,所以效率高于正排表。在全文检索中,检索的快速响应是一个最为关键的性能,而索引建立由于在后台进行,尽管效率相对低一些,但不会影响整个搜索引擎的效率。 倒排表的结构图如图2:

Solr的查询结果去重

Group将具有公共字段值的文档进行分组,并返回每个组的顶部文档(可以指定排序)。但是最终的结果是展示在 grouped 这个结果集中。 Collapsing 和 Expand 组件结合起来,可以在 Solr 搜索结果中根据指定字段折叠,从而对文档分组去重的效果。 Collapsing常规用法是写在fq中,最简单的启用方式如下示例: Collapsing功能是在每个shard搜索上进行折叠,但是在最终汇总结果时并没有再次按照相应的折叠方式进行合并,导致可能出现的情况就是同一个分组出现多次。 在索引数据时使用路由,使用折叠字段作为路由字段,这样就可以把具有相同值的文档索引到同一个分片(但是这样也有坏处,可能会导致索引数据分布不均,海量数据下影响不大)。 在创建collection时使用以下两个参数

【Docker-Solr】打开Solr控制台报500错误

=== ERROR 1 === HTTP ERROR 500 Problem accessing /solr/. Reason: Server Error Caused by: javax.servlet.ServletException: javax.servlet.UnavailableException: Error processing the request. CoreContainer is either not initialized or shutting down. === ERROR 2 === [root@localhost ~]# docker-compose up -d ERROR: Can"t find a suitable configuration file in this directory or any parent. Are you in the right directory? Supported filenames: docker-compose.yml, docker-compose.yam

windows下怎么安装solr的php扩展

1、安装libssh2扩展带dll的就是windows用的。根据自己的环境选择安装包。这里选择的是5.5 Thread Safe (TS) x64解压完后,会有三个文件,libssh2.dll、php_ssh.dll、php_ssh2.pdb。将 php_ssh.dll、php_ssh2.pdb 放到你的 php 扩展目录下 php/ext/ 下。将libssh2.dll 复制到 c:/windows/system32 和 c:/windows/syswow64 各一份php.ini中加入 extension=php_ssh2.dll重启服务器,查看phpinfo(),是否有显示php_ssh2扩展加载成功。2、安装solr扩展 (2.3.0)下载,带dll的就是windows版的。将压缩包的php_solr.dll、php_solr.pdb 放到你的 php 扩展目录下 php/ext/ 下。php.ini中加入 extension=php_solr.dll重启服务器,查看phpinfo(),是否有显示solr扩展加载成功。

solr索引文件 最大多少

请查看Lucene3.5源码中 org.apache.lucene.index.IndexWriterConfig 的156行。

solr 的 stats 查出来的数据 java怎么取

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

请问solr如何按匹配度和更新时间排序,设置权重

首先,updatetime靠前,这个比较容易sort=updatetime desc其次,标题匹配靠前,如果改动较小的情况下,只要在搜索的时候增加title字段的权重即可,如果想绝对的靠前,那么需要对lucene的相似度打分公式进行相应的修改

如何修改solr默认jvm参数

从5.0开始,solr采用了自动发现模式(discovery,区别于传统模式legacy),Solr会自动找到安装目录中、或solr_home中的配置文件:core.properties,并根据里面的name属性来初始化相对于的core。solr.xml中仍然会定义一些配置参数

solr 客户端加访问用户名密码后 后端程序(java)怎么访问

http://www.open-open.com/lib/view/open1393165019646.html

solr查询某个字段最大值,如何实现

q:查询的关键字,此参数最为重要,例如,q=id:1,默认为q=*:*,类似于sql中的where 1=1。fq(filter query):过滤查询,提供一个可选的筛选器查询。返回在q查询符合结果中同时符合的fq条件的查询结果,例如:q=id:1&fq=sort:[1 TO 5]&fq=section:0,找关键字id为1 的,并且sort是1到5之间,section=0的。还能写成fq=+sort[1 TO 5] +section:0]。性能方面的考虑:每个fq下面的记录都会单独缓存。可以考虑把经常在一起的fq条件用+方式写。sort:排序方式,例如id desc 表示按照 “id” 降序。id desc, price asc先按id降序,再按price升序。sum(x_f, y_f) desc按x_f和y_f字段的和降序。start,rows:分页参数,类似于start,limite的功能。啥都不输的话默认值分别为start=0,limit=10。

如何保证solr跟数据库的数据一致性

关系型数据库有四个显著的特征,即安全性、完整性、并发性和监测性。数据库的安全性就是要保证数据库中数据的安全,防止未授权用户随意修改数据库中的数据,确保数据的安全。在大多数数据库管理系统中,主要是通过许可来保证数据库的安全性。完整性是数据库的一个重要特征,也是保证数据库中的数据切实有效、防止错误、实现商业规则的一种重要机制。在数据库中,区别所保存的数据是无用的垃圾还是有价值的信息,主要是依据数据库的完整性是否健全

solr重启导致数据丢失,与solr.war的修改有关系吗

solr重启导致数据丢失,与solr.war的修改有关系从5.0开始,solr采用了自动发现模式(discovery,区别于传统模式legacy),Solr会自动找到安装目录中、或solr_home中的配置文件:core.properties,并根据里面的name属性来初始化相对于的core。solr.xml中仍然会定义一些配置参数,但是core本身不会定义在这个文件中。Solr会递归搜索所有solr和solr_home目录和子目录,当在一个目录中发现core.properties后,就停止搜索当前目录的所有子目录,转向下一个同级目录搜索。所以,下面两个配置只有第一个生效:./cores/core1/core.properties./cores/core1/coremore/core5/core.properties而下面三个配置,都会生效:./cores/somecores/core1/core.properties./cores/somecores/core2/core.properties./cores/othercores/core3/core.properties一个core.properties文件代表一个core。文件的内容可以是空的,这个时候,solr会把该文件所在的目录作为name,比如跟./cores/core1/core.properties对应的core name就是core1;instanceDir就是./cores/core1;dataDir就是./cores/core1/data,等等。core.properties配置参数:

solr 改了dataimport.properties配置文件得重启吗

从5.0开始,solr采用了自动发现模式(discovery,区别于传统模式legacy),Solr会自动找到安装目录中、或solr_home中的配置文件:core.properties,并根据里面的name属性来初始化相对于的core。solr.xml中仍然会定义一些配置参数,但是core本身不会定义在这个文件中。Solr会递归搜索所有solr和solr_home目录和子目录,当在一个目录中发现core.properties后,就停止搜索当前目录的所有子目录,转向下一个同级目录搜索。所以,下面两个配置只有第一个生效:./cores/core1/core.properties./cores/core1/coremore/core5/core.properties而下面三个配置,都会生效:./cores/somecores/core1/core.properties./cores/somecores/core2/core.properties./cores/othercores/core3/core.properties一个core.properties文件代表一个core。文件的内容可以是空的,这个时候,solr会把该文件所在的目录作为name,比如跟./cores/core1/core.properties对应的core name就是core1;instanceDir就是./cores/core1;dataDir就是./cores/core1/data,等等。core.properties配置参数:

solr 客户端加访问用户名密码后 后端程序怎么访问

设置访问策略具体参考

solr中文搜索词组问题

可能是中文分词存在问题,可以在网页上测试分词字段的分词效果,例如下图:若是上述效果,就不会存在你那种问题,但如果是网站被分成了“网”“站”则说明分词不对

如何用Solr搭建大数据查询平台

0×00 开头照例扯淡自从各种脱裤门事件开始层出不穷,在下就学乖了,各个地方的密码全都改成不一样的,重要帐号的密码定期更换,生怕被人社出祖宗十八代的我,甚至开始用起了假名字,我给自己起一新网名”兴才”,这个看起来还不错的名字,其实是我们家乡骂人土话,意思是脑残人士…. -_-|||额好吧,反正是假的,不要在意这些细节。这只是名,至于姓氏么,每个帐号的注册资料那里,照着百家姓上赵钱孙李周吴郑王的依次往下排,什么张兴才、李兴才、王兴才……于是也不知道我这样”兴才”了多久,终于有一天,我接到一个陌生电话:您好,请问是马兴才先生吗?好么,该来的终于还是来了,于是按名索骥,得知某某网站我用了这个名字,然后通过各种途径找,果然,那破站被脱裤子了。果断Down了那个裤子,然后就一发不可收拾,走上了收藏裤子的不归路,直到有一天,我发现收藏已经非常丰富了,粗略估计得好几十亿条数据,拍脑袋一想,这不能光收藏啊,我也搭个社工库用吧……0×01 介绍社工库怎么搭呢,这种海量数据的东西,并不是简单的用mysql建个库,然后做个php查询select * from sgk where username like ‘%xxxxx%"这样就能完事的,也不是某些幼稚骚年想的随便找个4g内存,amd双核的破电脑就可以带起来的,上面这样的语句和系统配置,真要用于社工库查询,查一条记录恐怕得半小时。好在这个问题早就被一种叫做全文搜索引擎的东西解决了,更好的消息是,全文搜索引擎大部分都是开源的,不需要花钱。目前网上已经搭建好的社工库,大部分是mysql+coreseek+php架构,coreseek基于sphinx,是一款优秀的全文搜索引擎,但缺点是比较轻量级,一旦数据量过数亿,就会有些力不从心,并且搭建集群做分布式性能并不理想,如果要考虑以后数据量越来越大的情况,还是得用其他方案,为此我使用了solr。Solr的基础是著名的Lucene框架,基于java,通过jdbc接口可以导入各种数据库和各种格式的数据,非常适合开发企业级的海量数据搜索平台,并且提供完善的solr cloud集群功能,更重要的是,solr的数据查询完全基于http,可以通过简单的post参数,返回json,xml,php,python,ruby,csv等多种格式。以前的solr,本质上是一组servlet,必须放进Tomcat才能运行,从solr5开始,它已经自带了jetty,配置的好,完全可以独立使用,并且应付大量并发请求,具体的架构我们后面会讲到,现在先来进行solr的安装配置。0×02 安装和配置以下是我整个搭建和测试过程所用的硬件和软件平台,本文所有内容均在此平台上完成:软件配置: solr5.5,mysql5.7,jdk8,Tomcat8 Windows10/Ubuntu14.04 LTS硬件配置: i7 4770k,16G DDR3,2T西数黑盘2.1 mysql数据库Mysql数据库的安装和配置我这里不再赘述,只提一点,对于社工库这种查询任务远远多于插入和更新的应用来说,最好还是使用MyISAM引擎。搭建好数据库后,新建一个库,名为newsgk,然后创建一个表命名为b41sgk,结构如下:id bigint 主键 自动增长username varchar 用户名email varchar 邮箱password varchar 密码salt varchar 密码中的盐或者第二密码ip varchar ip、住址、电话等其他资料site varchar 数据库的来源站点接下来就是把收集的各种裤子全部导入这个表了,这里推荐使用navicat,它可以支持各种格式的导入,具体过程相当的枯燥乏味,需要很多的耐心,这里就不再废话了,列位看官自己去搞就是了,目前我初步导入的数据量大约是10亿条。2.2 Solr的搭建和配置首先下载solr:$ wget http://mirrors.hust.edu.cn/apache/lucene/solr/5.5.0/solr-5.5.0.tgz解压缩:$ tar zxvf solr-5.5.0.tgz安装jdk8:$ sudo add-apt-repository ppa:webupd8team/java$ sudo apt-get update$ sudo apt-get install oracle-java8-installer$ sudo apt-get install oracle-java8-set-default因为是java跨平台的,Windows下和linux下solr是同一个压缩包,windows下jdk的安装这里不再说明。进入解压缩后的solr文件夹的bin目录,solr.cmd和solr分别是windows和linux下的启动脚本:因为社工库是海量大数据,而jvm默认只使用512m的内存,这远远不够,所以我们需要修改,打开solr.in.sh文件,找到这一行:SOLR_HEAP=”512m”依据你的数据量,把它修改成更高,我这里改成4G,改完保存. 在windows下略有不同,需要修改solr.in.cmd文件中的这一行:set SOLR_JAVA_MEM=-Xms512m -Xmx512m同样把两个512m都修改成4G。Solr的启动,重启和停止命令分别是:$ ./solr start$ ./solr restart –p 8983$ ./solr stop –all在linux下还可以通过install_solr_service.sh脚本把solr安装为服务,开机后台自动运行。Solr安装完成,现在我们需要从mysql导入数据,导入前,我们需要先创建一个core,core是solr的特有概念,每个core是一个查询、数据,、索引等的集合体,你可以把它想象成一个独立数据库,我们创建一个新core:在solr-5.5.0/server/solr子目录下面建立一个新文件夹,命名为solr_mysql,这个是core的名称,在下面创建两个子目录conf和data,把solr-5.5.0/solr-5.5.0/example/example-DIH/solr/db/conf下面的所有文件全部拷贝到我们创建的conf目录中.接下来的配置主要涉及到三个文件, solrconfig.xml, schema.xml和db-data-config.xml。首先打开db-data-config.xml,修改为以下内容:<dataConfig> <dataSource name="sgk" type="JdbcDataSource" driver="com.mysql.jdbc.Driver" url="jdbc:mysql://127.0.0.1:3306/newsgk" user="root" password="password" batchSize="-1" /> <document name="mysgk"> <entity name="b41sgk" pk="id" query="select * from b41sgk"> <field column="id" name="id"/> <field column="username" name="username"/> <field column="email" name="email"/> <field column="password" name="password"/> <field column="salt" name="salt"/> <field column="ip" name="ip"/> <field column="site" name="site"/> </entity> </document></dataConfig>这个文件是负责配置导入数据源的,请按照mysql实际的设置修改datasource的内容,下面entity的内容必须严格按照mysql中社工库表的结构填写,列名要和数据库中的完全一样。然后打开solrconfig.xml,先找到这一段: <schemaFactory class="ManagedIndexSchemaFactory"> <bool name="mutable">true</bool> <str name="managedSchemaResourceName">managed-schema</str> </schemaFactory>把它全部注释掉,加上一行,改成这样: <!-- <schemaFactory class="ManagedIndexSchemaFactory"> <bool name="mutable">true</bool> <str name="managedSchemaResourceName">managed-schema</str> </schemaFactory>--> <schemaFactory class="ClassicIndexSchemaFactory"/>这是因为solr5 以上默认使用managed-schema管理schema,需要更改为可以手动修改。然后我们还需要关闭suggest,它提供搜索智能提示,在社工库中我们用不到这样的功能,重要的是,suggest会严重的拖慢solr的启动速度,在十几亿数据的情况下,开启suggest可能会导致solr启动加载core长达几个小时!同样在solrconfig.xml中,找到这一段: <searchComponent name="suggest" class="solr.SuggestComponent"> <lst name="suggester"> <str name="name">mySuggester</str> <str name="lookupImpl">FuzzyLookupFactory</str> <!-- org.apache.solr.spelling.suggest.fst --> <str name="dictionaryImpl">DocumentDictionaryFactory</str> <!-- org.apache.solr.spelling.suggest.HighFrequencyDictionaryFactory --> <str name="field">cat</str> <str name="weightField">price</str> <str name="suggestAnalyzerFieldType">string</str> </lst> </searchComponent> <requestHandler name="/suggest" class="solr.SearchHandler" startup="lazy"> <lst name="defaults"> <str name="suggest">true</str> <str name="suggest.count">10</str> </lst> <arr name="components"> <str>suggest</str> </arr> </requestHandler>把这些全部删除,然后保存solrconfig.xml文件。接下来把managed-schema拷贝一份,重命名为schema.xml (原文件不要删除),打开并找到以下位置:只保留_version_和_root_节点,然后把所有的field,dynamicField和copyField全部删除,添加以下的部分: <field name="id" type="int" indexed="true" stored="true" required="true" multiValued="false" /> <field name="username" type="text_ik" indexed="true" stored="true"/> <field name="email" type="text_ik" indexed="true" stored="true"/> <field name="password" type="text_general" indexed="true" stored="true"/> <field name="salt" type="text_general" indexed="true" stored="true"/> <field name="ip" type="text_general" indexed="true" stored="true"/> <field name="site" type="text_general" indexed="true" stored="true"/> <field name="keyword" type="text_ik" indexed="true" stored="false" multiValued="true"/> <copyField source="username" dest="keyword"/> <copyField source="email" dest="keyword"/> <uniqueKey>id</uniqueKey>这里的uniqueKey是配置文件中原有的,用来指定索引字段,必须保留。新建了一个字段名为keyword,它的用途是联合查询,即当需要同时以多个字段做关键字查询时,可以用这一个字段名代替,增加查询效率,下面的copyField即用来指定复制哪些字段到keyword。注意keyword这样的字段,后面的multiValued属性必须为true。username和email以及keyword这三个字段,用来检索查询关键字,它们的类型我们指定为text_ik,这是一个我们创造的类型,因为solr虽然内置中文分词,但效果并不好,我们需要添加IKAnalyzer中文分词引擎来查询中文。在https://github.com/EugenePig/ik-analyzer-solr5下载IKAnalyzer for solr5的源码包,然后使用Maven编译,得到一个文件IKAnalyzer-5.0.jar,把它放入solr-5.5.0/server/solr-webapp/webapp/WEB-INF/lib目录中,然后在solrconfig.xml的fieldType部分加入以下内容: <fieldType name="text_ik" class="solr.TextField"> <analyzer type="index" useSmart="false" class="org.wltea.analyzer.lucene.IKAnalyzer"/> <analyzer type="query" useSmart="true" class="org.wltea.analyzer.lucene.IKAnalyzer"/> </fieldType>保存后,core的配置就算完成了,不过要导入mysql数据,我们还需要在mysql网站上下载mysql-connector-java-bin.jar库文件,连同solr-5.5.0/dist目录下面的solr-dataimporthandler-5.5.0.jar,solr-dataimporthandler-extras-5.5.0.jar两个文件,全部拷贝到solr-5.5.0/server/solr-webapp/webapp/WEB-INF/lib目录中,然后重启solr,就可以开始数据导入工作了。

solr ext.dic哪里有

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<Connector port="8080" protocol="HTTP/1.1"connectionTimeout="20000"redirectPort="8443" URIEncoding="UTF-8" />4、创建solr.xml,存放在路径:tomcat/conf/Catalina/localhost/solr.xml,内容:<Context path="/solr" docBase="C:Tomcat 7.0webappssolr.war"debug="0" crossContext="true"><Environment name="solr/home" type="java.lang.String" value="C:Tomcat 7.0insolr" override="true" /></Context>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.jar6、在C:Tomcat 7.0insolrcollection1conf 下的solrconfig.xml增加以下数据库配置:<requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler"> <lst name="defaults"> <str name="config">data-config.xml</str> </lst> </requestHandler>7、将tomcatinsolrcollection1conf下增加data-config.xml文件,内容如下:<dataConfig> <dataSource type="JdbcDataSource" driver="com.mysql.jdbc.Driver" url="jdbc:mysql://192.168.1.221:3306/tmsdb" user="root" password="123456"/> <document name="content"> <entity name="node" query="select id,author,title,content from solrdb"> <field column="id" name="id" /> <field column="author" name="author" /> <field column="title" name="title" /> <field column="content" name="content" /></entity> </document> </dataConfig>8、增加中文分词器,ik-analyzer的配置如下:①目前的中文分词主要有两种 1,基于中科院ICTCLAS的隐式马尔科夫hhmm算法的中文分词器,例如smartcn等。(不支持自定义扩展词库) 2,基于正向迭代最细粒度切分算法(正向最大匹配并且最细分词)例如IK,庖丁等(支持自定义扩展词库) 安装分词前,可以去下载IK的分词包 :IK-Analyzer-4.7.1-0.0.1-SNAPSHOT.jar下载完毕后,将此包放进tomcatsolr的WEB-INFlib下面:tomcatwebappssolrWEB-INFlib 。下面需要在solr的schemal.xml进行分词器注册:<!-- 配置IK分词器 --> <fieldType name="text_ik" class="solr.TextField" positionIncrementGap="100"><analyzer type="index"> <!-- 分词--> <tokenizer class="org.wltea.analyzer.lucene.IKTokenizerFactory"/> <!-- 禁用词过滤根据情况使用--> <!-- <filter class="org.wltea.analyzer.lucene.IKStopFilterFactory"/> --> </analyzer> <analyzer type="query"> <!-- 分词--> <tokenizer class="org.wltea.analyzer.lucene.IKTokenizerFactory"/> <!-- 禁用词过滤根据情况使用--> <!-- <filter class="org.wltea.analyzer.lucene.IKStopFilterFactory"/>--> </analyzer> </fieldType>最后还得配置一个引用字段就OK了<field name="ik" type="text_ik" indexed="true" stored="true" multiValued="true"/>②它的安装部署十分简单,将IKAnalyzer2012.jar部署亍项目的lib目录中;IKAnalyzer.cfg.xml不stopword.dic文件放置在class根目录(对于web项目,通常是WEB-I NF/classes目彔,同hibernate、log4j等配置文件相同)下即可 ;然后配置solr4.7中schema.xml配置解析器:<schema name="example" version="1.1"> …… <fieldType name="text" class="solr.TextField"> <analyzer class="org.wltea.analyzer.lucene.IKAnalyzer"/> </fieldType>…… </schema>

solr怎么设置才能像数据库中的like模糊查询

可以试试:使用SolrQuery对象,SolrQuery solrQuery = new SolrQuery(); //组装查询条件solrQuery.setQuery("*:*");String key = "java3";solrQuery.addFilterQuery("content:" + "*"+key+"*" );试试吧

如何理解solr的core和collection

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<Connector port="8080" protocol="HTTP/1.1"connectionTimeout="20000"redirectPort="8443" URIEncoding="UTF-8" />4、创建solr.xml,存放在路径:tomcat/conf/Catalina/localhost/solr.xml,内容:<Context path="/solr" docBase="C:Tomcat 7.0webappssolr.war"debug="0" crossContext="true"><Environment name="solr/home" type="java.lang.String" value="C:Tomcat 7.0insolr" override="true" /></Context>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.jar6、在C:Tomcat 7.0insolrcollection1conf 下的solrconfig.xml增加以下数据库配置:<requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler"> <lst name="defaults"> <str name="config">data-config.xml</str> </lst> </requestHandler>7、将tomcatinsolrcollection1conf下增加data-config.xml文件,内容如下:<dataConfig> <dataSource type="JdbcDataSource" driver="com.mysql.jdbc.Driver" url="jdbc:mysql://192.168.1.221:3306/tmsdb" user="root" password="123456"/> <document name="content"> <entity name="node" query="select id,author,title,content from solrdb"> <field column="id" name="id" /> <field column="author" name="author" /> <field column="title" name="title" /> <field column="content" name="content" /></entity> </document> </dataConfig>8、增加中文分词器,ik-analyzer的配置如下:①目前的中文分词主要有两种 1,基于中科院ICTCLAS的隐式马尔科夫hhmm算法的中文分词器,例如smartcn等。(不支持自定义扩展词库) 2,基于正向迭代最细粒度切分算法(正向最大匹配并且最细分词)例如IK,庖丁等(支持自定义扩展词库) 安装分词前,可以去下载IK的分词包 :IK-Analyzer-4.7.1-0.0.1-SNAPSHOT.jar下载完毕后,将此包放进tomcatsolr的WEB-INFlib下面:tomcatwebappssolrWEB-INFlib 。下面需要在solr的schemal.xml进行分词器注册:<!-- 配置IK分词器 --> <fieldType name="text_ik" class="solr.TextField" positionIncrementGap="100"><analyzer type="index"> <!-- 分词--> <tokenizer class="org.wltea.analyzer.lucene.IKTokenizerFactory"/> <!-- 禁用词过滤根据情况使用--> <!-- <filter class="org.wltea.analyzer.lucene.IKStopFilterFactory"/> --> </analyzer> <analyzer type="query"> <!-- 分词--> <tokenizer class="org.wltea.analyzer.lucene.IKTokenizerFactory"/> <!-- 禁用词过滤根据情况使用--> <!-- <filter class="org.wltea.analyzer.lucene.IKStopFilterFactory"/>--> </analyzer> </fieldType>最后还得配置一个引用字段就OK了<field name="ik" type="text_ik" indexed="true" stored="true" multiValued="true"/>②它的安装部署十分简单,将IKAnalyzer2012.jar部署亍项目的lib目录中;IKAnalyzer.cfg.xml不stopword.dic文件放置在class根目录(对于web项目,通常是WEB-I NF/classes目彔,同hibernate、log4j等配置文件相同)下即可 ;然后配置solr4.7中schema.xml配置解析器:<schema name="example" version="1.1"> …… <fieldType name="text" class="solr.TextField"> <analyzer class="org.wltea.analyzer.lucene.IKAnalyzer"/> </fieldType>…… </schema>

如何把elasticsearch换成solr架构

从两个方面对ElasticSearch和Solr进行对比,从关系型数据库中的导入速度和模糊查询的速度。单机对比1. Solr 发布了4.0-alpha,试了一下,发现需要自己修改schema,好处是它自带一个data importer。在自己的计算机上测试了一下,导入的性能大概是:14分钟导入 3092730 条记录,约合 3682条/秒。2. 3百万条记录的情况下,模糊查询和排序基本都在1秒内返回3. 刚才的测试,是每个field单独存储,现在修改了一下配置文件,增加了一个copyField,所有的field都拷贝一份到text这个field里面去,导入的性能大概是:19分钟导入了3092730 条记录,约合 2713条/秒4. 3百万条记录的情况下,针对text的模糊查询基本在1秒内返回,但是针对所有记录的排序,大概要2~3秒5. 使用 elasticsearch 0.19.8,缺省配置,用单任务导入,导入性能是:20分钟导入了3092730 条记录,约合2577条/秒6. 3百万条记录的情况下,查询基本上在1秒内返回,但是模糊查询比较慢,第一次要10秒,后来大概要1~3秒。加上排序大概需要5秒,整体排序基本100ms查询及排序的指令:{ "query": { "query_string": { "query": "*999*" } }, "sort": [ { "TIME_UP": { "order": "asc" } } ]}7. Es0.19.8,用两个任务导入,导入性能是:13分钟导入了3092730 条记录,约合3965条/秒8. Solr全部建好索引后,占用磁盘空间是1.2G,es占用磁盘空间是4G单机对比2在一台Intel i7,32G内存的机器上,重新跑这两个的对比。不过有个重大的区别在于,Solr是在这台性能很好的机器上跑,而es的导入进程则是在一台Intel 四核 2.5G,4G内存的机器上跑的,也许会有性能的差异。ES版本0.19.8,Solr版本4.0-ALPHA。1. Solr的导入性能:3400万条记录,用时62分钟,平均9140条/秒,占用空间12.75G2. 使用 *999* 这样的模糊查询,3秒以内返回,稍长一点的查询条件 *00100014*,也是2~3秒返回3. Es的导入性能(设置Xmx为10G):3400万条记录,用时40分钟,平均14167条/秒,占用空间33.26G,客户端采用4个并发。4. 使用 *999* 这样的模糊查询,9秒返回,稍长一点的查询条件 *00100014*,11.8秒返回5. 如果不是针对所有字段查询,而是针对某个特定字段,比如 SAM_CODE: *00100014*,那么也是1秒以内返回。6. 结论:es的查询效率也可以很高,只是我们还不会用。7. 结论2:es有个设置是把所有字段放一块的那个,缺省是放一起,但是不知道为什么没起到应有的作用。备注:1. Solr第一次的那个内存使用的是缺省设置,这次改为10G,结果导入性能反而变差了,400万条记录,用了8分钟,平均8333条/秒,不知道为什么。2. 改回缺省的内存配置,导入速度仍然慢。3. 重启Linux,用10G的内存配置,再导入,5030万条记录,用时92分,约9112条/秒,说明导入速度和内存配置没有大差别4. 在10G配置的情况下,检索速度也差别不大。5. 为了搞清楚lucene4.0和solr4.0的进步有多大,下载了solr3.6.1,所幸的是4.0的配置文件在3.6.1上也可以用,所以很快就搭起来进行测试,导入性能为:3400万条记录,用时55分钟,约10303条/秒,占用空间13.85G。查询性能:*999*第一次11.6s,*00100014* 27.3s,相比4.0ALPHA的结果(5000万结果当中,*999*第一次2.6s,*00100014*第一次2.5s)来说,慢了很多,与es的性能差不多,因此,也许lucene4.0真的对性能有大幅提升?集群对比:采用4台同样配置(Intel i7,32G内存)的Centos 6.3组成的集群,进行对比。1. 首先是es,很方便的就组成了一个Cluster,等上一个3400万条的Index全部均衡负载之后进行测试,导入到另外一个Index当中。2. 导入性能:8500万条记录,用时72分钟,约为19676条/秒。在前5千万条记录导入时的速度在2万/条以上,初始的速度在2.2万/条。占用空间78.6G(由于有冗余,实际占用空间为157.2G)3. 查询性能:*999*第一次13.5秒,第二次19.5秒,第三次7.4秒,第四次7.1秒,第五次7.1秒*00100014*第一次17.2秒,第二次16.6秒,第三次17.9秒,第四次16.7秒,第五次17.1秒SAM_CODE:*999*,0.8s,1.3s,0.02s,0.02s,0.02sSAM_CODE: *00100014*,0.1s,0.1s,0.02s,0.03s,0.05s4. Solr4.0-ALPHA,SolrCloud的配置还算简单,启动一个ZooKeeper,然后其他三台机器访问这个地址,就可以组成一个Cloud:机器1: nohup java -Xms10G -Xmx10G -Xss256k -Djetty.port=8983 -Dsolr.solr.home="./example-DIH/solr/" -Dbootstrap_confdir=./example-DIH/solr/db/conf/ -Dcollection.configName=xabconf3 -DzkRun -DnumShards=4 -jar start.jar &其他机器:nohup java -Xms10G -Xmx10G -Dsolr.solr.home="./example-DIH/solr/" -DzkHost=192.168.2.11:9983 -jar start.jar &但是在执行 data import 的时候,频繁出现 OutOfMemoryError: unable to create new native thread。查了很多资料,把Linux的ulimit当中的nproc改成10240,把Xss改成256K,都解决不了问题。暂时没有办法进行。结论1. 导入性能,es更强2. 查询性能,solr 4.0最好,es与solr 3.6持平,可以乐观的认为,等es采用了lucene4之后,性能会有质的提升3. Es采用SAM_CODE这样的查询性能很好,但是用_all性能就很差,而且差别非常大,因此,个人认为在目前的es情况下,仍然有性能提升的空间,只是现在还没找到方法。

solr如何让全词匹配结果在最前面

先,只要在搜索的时候增加title字段的权重即可,如果改动较小的情况下,updatetime靠前,标题匹配靠前,这个比较容易sort=updatetime desc 其次,如果想绝对的靠前

solr怎么设置才能像数据库中的like模糊查询

可以试试:使用SolrQuery对象,SolrQuery solrQuery = new SolrQuery(); //组装查询条件solrQuery.setQuery("*:*");String key = "java3";solrQuery.addFilterQuery("content:" + "*"+key+"*" );试试吧

Solr 配置DataImport出错是什么原因?

王者荣耀里面的吕布上了妲己,赵云恋上了貂蝉,程咬金绑架了王昭君,嘿哈

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<Connector port="8080" protocol="HTTP/1.1"connectionTimeout="20000"redirectPort="8443" URIEncoding="UTF-8" />4、创建solr.xml,存放在路径:tomcat/conf/Catalina/localhost/solr.xml,内容:<Context path="/solr" docBase="C:Tomcat 7.0webappssolr.war"debug="0" crossContext="true"><Environment name="solr/home" type="java.lang.String" value="C:Tomcat 7.0insolr" override="true" /></Context>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.jar6、在C:Tomcat 7.0insolrcollection1conf 下的solrconfig.xml增加以下数据库配置:<requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler"> <lst name="defaults"> <str name="config">data-config.xml</str> </lst> </requestHandler>7、将tomcatinsolrcollection1conf下增加data-config.xml文件,内容如下:<dataConfig> <dataSource type="JdbcDataSource" driver="com.mysql.jdbc.Driver" url="jdbc:mysql://192.168.1.221:3306/tmsdb" user="root" password="123456"/> <document name="content"> <entity name="node" query="select id,author,title,content from solrdb"> <field column="id" name="id" /> <field column="author" name="author" /> <field column="title" name="title" /> <field column="content" name="content" /></entity> </document> </dataConfig>8、增加中文分词器,ik-analyzer的配置如下:①目前的中文分词主要有两种 1,基于中科院ICTCLAS的隐式马尔科夫hhmm算法的中文分词器,例如smartcn等。(不支持自定义扩展词库) 2,基于正向迭代最细粒度切分算法(正向最大匹配并且最细分词)例如IK,庖丁等(支持自定义扩展词库) 安装分词前,可以去下载IK的分词包 :IK-Analyzer-4.7.1-0.0.1-SNAPSHOT.jar下载完毕后,将此包放进tomcatsolr的WEB-INFlib下面:tomcatwebappssolrWEB-INFlib 。下面需要在solr的schemal.xml进行分词器注册:<!-- 配置IK分词器 --> <fieldType name="text_ik" class="solr.TextField" positionIncrementGap="100"><analyzer type="index"> <!-- 分词--> <tokenizer class="org.wltea.analyzer.lucene.IKTokenizerFactory"/> <!-- 禁用词过滤根据情况使用--> <!-- <filter class="org.wltea.analyzer.lucene.IKStopFilterFactory"/> --> </analyzer> <analyzer type="query"> <!-- 分词--> <tokenizer class="org.wltea.analyzer.lucene.IKTokenizerFactory"/> <!-- 禁用词过滤根据情况使用--> <!-- <filter class="org.wltea.analyzer.lucene.IKStopFilterFactory"/>--> </analyzer> </fieldType>最后还得配置一个引用字段就OK了<field name="ik" type="text_ik" indexed="true" stored="true" multiValued="true"/>②它的安装部署十分简单,将IKAnalyzer2012.jar部署亍项目的lib目录中;IKAnalyzer.cfg.xml不stopword.dic文件放置在class根目录(对于web项目,通常是WEB-I NF/classes目彔,同hibernate、log4j等配置文件相同)下即可 ;然后配置solr4.7中schema.xml配置解析器:<schema name="example" version="1.1"> …… <fieldType name="text" class="solr.TextField"> <analyzer class="org.wltea.analyzer.lucene.IKAnalyzer"/> </fieldType>…… </schema>

Sola用日文翻译是天空,Solr是什么。

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

solr 什么是全量索引和增量索引

增量索引index定义配置如下#增量索引 index定义index delta:mysql{source = deltapath = /usr/local/coreseek/var/data/delta/charset_dictpath = /usr/local/mmseg3/etc/charset_type = zh_cn.utf-8}

关于Solr 谁可以告诉我这个问题怎么解决

最近搭建一个全文检索平台。最初考虑只采用lucene,然后自己写索引构建程序、检索框架等,类似osc @红薯 的方案,以前也做过比较熟悉。但有两个问题,1.比较复杂,工作量和维护量都比较大。2. 检索会有一定的延时。 看了看Solr决定采用solr,可以节省很大一部分开发时间。但有几个问题想请教下 osc 里的全文检索高手,希望大家不吝赐教: 1.第一种方案,solr配置数据库,自动处理建索引。这样会不会延时很大,无法做到实时检索? 2.第二种方案,通过solrj客户端在应用端 处理建索引问题,比如在发布一篇文章的时候,通过http 提交到solr 服务端上同时建索引,这样能不能达到实时检索?而且同时这个时候 应用端也会通过 http 检索 solr, 建索引检索同时进行,这样访问量大的时候会不会导致 内存泄露、索引文件磁盘I/O负载不了的问题?有经验的同学能不能讨论下?那种方案较好点,对实时性要求高点。或者配置上怎么优化?当然这个项目是企业内部应用,访问量不会太大,服务器资源有限,所以无法用到solr的分布式特性,比如索引复制、多核来解决这些问题。而且由于可能会部署在 windows下,排除了以前做过的sphinx、nlpbamboo 基于Postgresql数据库的方案。

solr和elasticsearch有什么优缺点

从两个方面对ElasticSearch和Solr进行对比,从关系型数据库中的导入速度和模糊查询的速度。单机对比1. Solr 发布了4.0-alpha,试了一下,发现需要自己修改schema,好处是它自带一个data importer。在自己的计算机上测试了一下,导入的性能大概是:14分钟导入 3092730 条记录,约合 3682条/秒。2. 3百万条记录的情况下,模糊查询和排序基本都在1秒内返回3. 刚才的测试,是每个field单独存储,现在修改了一下配置文件,增加了一个copyField,所有的field都拷贝一份到text这个field里面去,导入的性能大概是:19分钟导入了3092730 条记录,约合 2713条/秒4. 3百万条记录的情况下,针对text的模糊查询基本在1秒内返回,但是针对所有记录的排序,大概要2~3秒5. 使用 elasticsearch 0.19.8,缺省配置,用单任务导入,导入性能是:20分钟导入了3092730 条记录,约合2577条/秒6. 3百万条记录的情况下,查询基本上在1秒内返回,但是模糊查询比较慢,第一次要10秒,后来大概要1~3秒。加上排序大概需要5秒,整体排序基本100ms查询及排序的指令:{ "query": { "query_string": { "query": "*999*" } }, "sort": [ { "TIME_UP": { "order": "asc" } } ]}7. Es0.19.8,用两个任务导入,导入性能是:13分钟导入了3092730 条记录,约合3965条/秒8. Solr全部建好索引后,占用磁盘空间是1.2G,es占用磁盘空间是4G单机对比2在一台Intel i7,32G内存的机器上,重新跑这两个的对比。不过有个重大的区别在于,Solr是在这台性能很好的机器上跑,而es的导入进程则是在一台Intel 四核 2.5G,4G内存的机器上跑的,也许会有性能的差异。ES版本0.19.8,Solr版本4.0-ALPHA。1. Solr的导入性能:3400万条记录,用时62分钟,平均9140条/秒,占用空间12.75G2. 使用 *999* 这样的模糊查询,3秒以内返回,稍长一点的查询条件 *00100014*,也是2~3秒返回3. Es的导入性能(设置Xmx为10G):3400万条记录,用时40分钟,平均14167条/秒,占用空间33.26G,客户端采用4个并发。4. 使用 *999* 这样的模糊查询,9秒返回,稍长一点的查询条件 *00100014*,11.8秒返回5. 如果不是针对所有字段查询,而是针对某个特定字段,比如 SAM_CODE: *00100014*,那么也是1秒以内返回。6. 结论:es的查询效率也可以很高,只是我们还不会用。7. 结论2:es有个设置是把所有字段放一块的那个,缺省是放一起,但是不知道为什么没起到应有的作用。备注:1. Solr第一次的那个内存使用的是缺省设置,这次改为10G,结果导入性能反而变差了,400万条记录,用了8分钟,平均8333条/秒,不知道为什么。2. 改回缺省的内存配置,导入速度仍然慢。3. 重启Linux,用10G的内存配置,再导入,5030万条记录,用时92分,约9112条/秒,说明导入速度和内存配置没有大差别4. 在10G配置的情况下,检索速度也差别不大。5. 为了搞清楚lucene4.0和solr4.0的进步有多大,下载了solr3.6.1,所幸的是4.0的配置文件在3.6.1上也可以用,所以很快就搭起来进行测试,导入性能为:3400万条记录,用时55分钟,约10303条/秒,占用空间13.85G。查询性能:*999*第一次11.6s,*00100014* 27.3s,相比4.0ALPHA的结果(5000万结果当中,*999*第一次2.6s,*00100014*第一次2.5s)来说,慢了很多,与es的性能差不多,因此,也许lucene4.0真的对性能有大幅提升?集群对比:采用4台同样配置(Intel i7,32G内存)的Centos 6.3组成的集群,进行对比。1. 首先是es,很方便的就组成了一个Cluster,等上一个3400万条的Index全部均衡负载之后进行测试,导入到另外一个Index当中。2. 导入性能:8500万条记录,用时72分钟,约为19676条/秒。在前5千万条记录导入时的速度在2万/条以上,初始的速度在2.2万/条。占用空间78.6G(由于有冗余,实际占用空间为157.2G)3. 查询性能:*999*第一次13.5秒,第二次19.5秒,第三次7.4秒,第四次7.1秒,第五次7.1秒*00100014*第一次17.2秒,第二次16.6秒,第三次17.9秒,第四次16.7秒,第五次17.1秒SAM_CODE:*999*,0.8s,1.3s,0.02s,0.02s,0.02sSAM_CODE: *00100014*,0.1s,0.1s,0.02s,0.03s,0.05s4. Solr4.0-ALPHA,SolrCloud的配置还算简单,启动一个ZooKeeper,然后其他三台机器访问这个地址,就可以组成一个Cloud:机器1: nohup java -Xms10G -Xmx10G -Xss256k -Djetty.port=8983 -Dsolr.solr.home="./example-DIH/solr/" -Dbootstrap_confdir=./example-DIH/solr/db/conf/ -Dcollection.configName=xabconf3 -DzkRun -DnumShards=4 -jar start.jar &其他机器:nohup java -Xms10G -Xmx10G -Dsolr.solr.home="./example-DIH/solr/" -DzkHost=192.168.2.11:9983 -jar start.jar &但是在执行 data import 的时候,频繁出现 OutOfMemoryError: unable to create new native thread。查了很多资料,把Linux的ulimit当中的nproc改成10240,把Xss改成256K,都解决不了问题。暂时没有办法进行。结论1. 导入性能,es更强2. 查询性能,solr 4.0最好,es与solr 3.6持平,可以乐观的认为,等es采用了lucene4之后,性能会有质的提升3. Es采用SAM_CODE这样的查询性能很好,但是用_all性能就很差,而且差别非常大,因此,个人认为在目前的es情况下,仍然有性能提升的空间,只是现在还没找到方法。

如何在Ubuntu上安装Solr

安装Apache Solr首先,让我们从以下位置下载最新版本的Apache Solr:文件: solr-5.3.1.tgz一旦文件下载,在/ opt下创建一个名为solr的目录并移动下载的文件。 现在导航到目录/opt/solr并使用以下命令解压缩该文件。sudo tar -xvf solr-5.3.1.tgzSolr命令必须从bin目录中执行,因此请导航到以下路径。/opt/solr/solr-5.3.1/bin提取的目录将如下所示。Solr Ubuntu文件夹bin文件夹包含用于启动和停止服务器的脚本。 example文件夹包含几个示例文件。 我们将使用其中一个来演示Solr如何对数据进行索引。server文件夹包含用于写入所有Solr日志的logs文件夹。在索引期间检查日志中的任何错误将有所帮助。 服务器下的solr文件夹包含不同的集合或核心。 每个核/集合的配置和数据存储在相应的核/集合文件夹中。Apache Solr附带了一个内置的Jetty服务器。 但在我们启动solr实例之前,我们必须验证JAVA_HOME是否在机器上设置。现在使用以下命令启动Solr服务器。sudo ./solr start这将在默认端口8983下启动Solr服务器。我们现在可以在浏览器中打开以下URL,并验证我们的Solr实例正在运行。

如何使solr查询结果带score

 一、 查询参数说明在做solr查询的时候,solr提供了很多参数来扩展它自身的强大功能!以下是使用频率最高的一些参数!1、常用q - 查询字符串,这个是必须的。如果查询所有*:* ,根据指定字段查询(Name:张三 AND Address:北京)fq - (filter query)过虑查询,作用:在q查询符合结果中同时是fq查询符合的,例如:q=Name:张三&fq=CreateDate:[20081001 TO 20091031],找关键字mm,并且CreateDate是20081001fl - 指定返回那些字段内容,用逗号或空格分隔多个。

solr 怎么根据条件查询总数量

public class ProductSearchService { //通过spring注入HttpSolrServer对象 @Autowired private HttpSolrServer httpSolrServer; /** * * @描述:根据商品类型、商品颜色、价格区间组合条件到solr中查询数据 * @创建人: * @创建时间:2015年11月04日 上午10:49:19 * @param productType 商品的类型 * @param minPrice 价格区间底价 * @param maxPrice 价格区间顶价 * @param color 商品的颜色 * @return 查询得到的所有商品列表 * @throws SolrServerException */ public List<Product> queryProduct(String productType,String color, Float minPrice, Float maxPrice) throws SolrServerException { // 创建查询对象 SolrQuery solrQuery = new SolrQuery(); // 创建组合条件串 StringBuilder params = new StringBuilder("productType:" + productType); // 组合商品颜色条件 if (color != null) { params.append(" AND color:" + color); } // 组合价格区间条件 if (minPrice.intValue() != 0 || maxPrice != 0) { params.append(" AND spPrice:[" + minPrice + " TO " + maxPrice + "]"); } solrQuery.setQuery(params.toString()); // 执行查询并获取查询数据 QueryResponse queryResponse = this.httpSolrServer.query(solrQuery); List<Product> products = queryResponse.getBeans(Product.class); return products; } }

数据库定义的字段过大怎么解析 solr

关系型数据库有四个显著的特征,即安全性、完整性、并发性和监测性。数据库的安全性就是要保证数据库中数据的安全,防止未授权用户随意修改数据库中的数据,确保数据的安全。在大多数数据库管理系统中,主要是通过许可来保证数据库的安全性

Solr可以不用Tomcat部署吗

可以啊, solr是基于servlet实现的,因此所有的servlet容器都可以。 比如:jetty

solr在maven项目中都需要什么依赖

第一步:编写maven项目的pom文件,导入依赖[html] view plain copy<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.millery.spring_solr</groupId> <artifactId>spring-solr</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>war</packaging> <!-- 添加依赖 --> <dependencies> <!-- Spring依赖 --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>4.1.3.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-beans</artifactId> <version>4.1.3.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> <version>4.1.3.RELEASE</version> </dependency>

solr怎样部署到weblogic

Solr需要运行在一个servlet 容器里(因此目前几乎所有常见的Servlet容器都可以满足Solr的运行需要)。solr在lucene的上层提供了一个基于HTTP/XML的Web Services,应用需要通过这个服务与solr进行交互。 关于Solr的详细介绍,此处就不再赘述

如何合理的控制solr查询的命中的数量

必须命中3个或更多的term,我才认为相关性更大,或者有一个百分比来限制80%以上的命中,就算此条记录不错。这个使用solr的edismax可以解决,方法如下:使用edismax,在q里写完 name:xxxxx饭 在Raw Query Paramters参数里面写 defType=edismax&mm=80%25然后查询即可,mm是最小匹配的数量,可以是个固定的值,也可也是个百分比,因为散仙是在solr的admin页面查询,所以需要把%替换成url字符%25,这样才能正确发送到solr的服务端 具体的资料请看:

solr jvm配置多大比较好

0×00 开头照例扯淡自从各种脱裤门事件开始层出不穷,在下就学乖了,各个地方的密码全都改成不一样的,重要帐号的密码定期更换,生怕被人社出祖宗十八代的我,甚至开始用起了假名字,我给自己起一新网名”兴才”,这个看起来还不错的名字,其实是我们家乡骂人土话,意思是脑残人士…. -_-|||额好吧,反正是假的,不要在意这些细节。这只是名,至于姓氏么,每个帐号的注册资料那里,照着百家姓上赵钱孙李周吴郑王的依次往下排,什么张兴才、李兴才、王兴才……于是也不知道我这样”兴才”了多久,终于有一天,我接到一个陌生电话:您好,请问是马兴才先生吗?好么,该来的终于还是来了,于是按名索骥,得知某某网站我用了这个名字,然后通过各种途径找,果然,那破站被脱裤子了。果断Down了那个裤子,然后就一发不可收拾,走上了收藏裤子的不归路,直到有一天,我发现收藏已经非常丰富了,粗略估计得好几十亿条数据,拍脑袋一想,这不能光收藏啊,我也搭个社工库用吧……0×01 介绍社工库怎么搭呢,这种海量数据的东西,并不是简单的用mysql建个库,然后做个php查询select * from sgk where username like ‘%xxxxx%"这样就能完事的,也不是某些幼稚骚年想的随便找个4g内存,amd双核的破电脑就可以带起来的,上面这样的语句和系统配置,真要用于社工库查询,查一条记录恐怕得半小时。好在这个问题早就被一种叫做全文搜索引擎的东西解决了,更好的消息是,全文搜索引擎大部分都是开源的,不需要花钱。目前网上已经搭建好的社工库,大部分是mysql+coreseek+php架构,coreseek基于sphinx,是一款优秀的全文搜索引擎,但缺点是比较轻量级,一旦数据量过数亿,就会有些力不从心,并且搭建集群做分布式性能并不理想,如果要考虑以后数据量越来越大的情况,还是得用其他方案,为此我使用了solr。Solr的基础是著名的Lucene框架,基于java,通过jdbc接口可以导入各种数据库和各种格式的数据,非常适合开发企业级的海量数据搜索平台,并且提供完善的solr cloud集群功能,更重要的是,solr的数据查询完全基于http,可以通过简单的post参数,返回json,xml,php,python,ruby,csv等多种格式。以前的solr,本质上是一组servlet,必须放进Tomcat才能运行,从solr5开始,它已经自带了jetty,配置的好,完全可以独立使用,并且应付大量并发请求,具体的架构我们后面会讲到,现在先来进行solr的安装配置。0×02 安装和配置以下是我整个搭建和测试过程所用的硬件和软件平台,本文所有内容均在此平台上完成:软件配置: solr5.5,mysql5.7,jdk8,Tomcat8 Windows10/Ubuntu14.04 LTS硬件配置: i7 4770k,16G DDR3,2T西数黑盘2.1 mysql数据库Mysql数据库的安装和配置我这里不再赘述,只提一点,对于社工库这种查询任务远远多于插入和更新的应用来说,最好还是使用MyISAM引擎。搭建好数据库后,新建一个库,名为newsgk,然后创建一个表命名为b41sgk,结构如下:id bigint 主键 自动增长username varchar 用户名email varchar 邮箱password varchar 密码salt varchar 密码中的盐或者第二密码ip varchar ip、住址、电话等其他资料site varchar 数据库的来源站点接下来就是把收集的各种裤子全部导入这个表了,这里推荐使用navicat,它可以支持各种格式的导入,具体过程相当的枯燥乏味,需要很多的耐心,这里就不再废话了,列位看官自己去搞就是了,目前我初步导入的数据量大约是10亿条。2.2 Solr的搭建和配置首先下载solr:$ wget 解压缩:$ tar zxvf solr-5.5.0.tgz安装jdk8:$ sudo add-apt-repository ppa:webupd8team/java$ sudo apt-get update$ sudo apt-get install oracle-java8-installer$ sudo apt-get install oracle-java8-set-default因为是java跨平台的,Windows下和linux下solr是同一个压缩包,windows下jdk的安装这里不再说明。进入解压缩后的solr文件夹的bin目录,solr.cmd和solr分别是windows和linux下的启动脚本:因为社工库是海量大数据,而jvm默认只使用512m的内存,这远远不够,所以我们需要修改,打开solr.in.sh文件,找到这一行:SOLR_HEAP=”512m”依据你的数据量,把它修改成更高,我这里改成4G,改完保存. 在windows下略有不同,需要修改solr.in.cmd文件中的这一行:set SOLR_JAVA_MEM=-Xms512m -Xmx512m同样把两个512m都修改成4G。Solr的启动,重启和停止命令分别是:$ ./solr start$ ./solr restart –p 8983$ ./solr stop –all在linux下还可以通过install_solr_service.sh脚本把solr安装为服务,开机后台自动运行。Solr安装完成,现在我们需要从mysql导入数据,导入前,我们需要先创建一个core,core是solr的特有概念,每个core是一个查询、数据,、索引等的集合体,你可以把它想象成一个独立数据库,我们创建一个新core:在solr-5.5.0/server/solr子目录下面建立一个新文件夹,命名为solr_mysql,这个是core的名称,在下面创建两个子目录conf和data,把solr-5.5.0/solr-5.5.0/example/example-DIH/solr/db/conf下面的所有文件全部拷贝到我们创建的conf目录中.接下来的配置主要涉及到三个文件, solrconfig.xml, schema.xml和db-data-config.xml。首先打开db-data-config.xml,修改为以下内容:这个文件是负责配置导入数据源的,请按照mysql实际的设置修改datasource的内容,下面entity的内容必须严格按照mysql中社工库表的结构填写,列名要和数据库中的完全一样。然后打开solrconfig.xml,先找到这一段:truemanaged-schema把它全部注释掉,加上一行,改成这样:<!-- truemanaged-schema-->这是因为solr5 以上默认使用managed-schema管理schema,需要更改为可以手动修改。然后我们还需要关闭suggest,它提供搜索智能提示,在社工库中我们用不到这样的功能,重要的是,suggest会严重的拖慢solr的启动速度,在十几亿数据的情况下,开启suggest可能会导致solr启动加载core长达几个小时!同样在solrconfig.xml中,找到这一段:mySuggesterFuzzyLookupFactory DocumentDictionaryFactory catpricestringtrue10suggest把这些全部删除,然后保存solrconfig.xml文件。接下来把managed-schema拷贝一份,重命名为schema.xml (原文件不要删除),打开并找到以下位置:只保留_version_和_root_节点,然后把所有的field,dynamicField和copyField全部删除,添加以下的部分:id这里的uniqueKey是配置文件中原有的,用来指定索引字段,必须保留。新建了一个字段名为keyword,它的用途是联合查询,即当需要同时以多个字段做关键字查询时,可以用这一个字段名代替,增加查询效率,下面的copyField即用来指定复制哪些字段到keyword。注意keyword这样的字段,后面的multiValued属性必须为true。username和email以及keyword这三个字段,用来检索查询关键字,它们的类型我们指定为text_ik,这是一个我们创造的类型,因为solr虽然内置中文分词,但效果并不好,我们需要添加IKAnalyzer中文分词引擎来查询中文。在下载IKAnalyzer for solr5的源码包,然后使用Maven编译,得到一个文件IKAnalyzer-5.0.jar,把它放入solr-5.5.0/server/solr-webapp/webapp/WEB-INF/lib目录中,然后在solrconfig.xml的fieldType部分加入以下内容:保存后,core的配置就算完成了,不过要导入mysql数据,我们还需要在mysql网站上下载mysql-connector-java-bin.jar库文件,连同solr-5.5.0/dist目录下面的solr-dataimporthandler-5.5.0.jar,solr-dataimporthandler-extras-5.5.0.jar两个文件,全部拷贝到solr-5.5.0/server/solr-webapp/webapp/WEB-INF/lib目录中,然后重启solr,就可以开始数据导入工作了。

solr应用一般怎么打包部署

解压 Tomcat 到一个目录,例如 F:ApacheTomcat将 solr 压缩包中 solr-5.3.0/ D:solr-5.3.0serversolr-webapp文件夹下有个webapp文件夹,将之复制到Tomcatwebapps目录下,并改成solr (名字随意,通过浏览器进行访问solr管理界面时要用到)将 solr 压缩包中 solr-5.3.0serverlibext 中的 jar 全部复制到 Tomcat webappssolrWEB-INFlib 目录中将 solr 压缩包中 solr-5.3.0/ server/resources /log4j.properties 复制到Tomcat webappssolrWEB-INFlib 目录中将 solr 压缩包中 solr-5.3.0/server/solr 目录复制到计算机某个目录下,如D:solr_home打开Tomcat/webapps/solr/WEB-INF下的web.xml,找到如下配置内容(初始状态下该内容是被注释掉的):<env-entry><env-entry-name>solr/home</env-entry-name><env-entry-value>/put/your/solr/home/here</env-entry-value><env-entry-type>java.lang.String</env-entry-type></env-entry>将<env-entry-value>中的内容改成你的solr_home路径,这里是D:/solr_home7保存关闭,而后启动tomcat,在浏览器输入http://localhost:8080/solr即可出现Solr的管理界面

如何在solr配置文件里添加新的搜索字段

solr的三个配置文件:1、solrconfig.xml 只配置一次就够了2、data-config.xml 配置数据库与solr搜索的映射关系,需要按实际情况处理3、schema.xml 配置solr搜索字段

求助:solr如何通过指定条件修改数据

修改主方法public int saveContent(String enterpriseId, String enterpriseName, String lableType, String resouce, String pubDate,String content) {int state = 0;LBHttpSolrServer server = SolrUtil.getSolrServer(ap.getEnterprisenewSolrUrl());SolrQuery query = new SolrQuery();query.set("q", "enterpriseId:" + enterpriseId);try {QueryResponse qr = server.query(query);List<EnterpriseContentBean> contentList = qr.getBeans(EnterpriseContentBean.class);// 设置需要保存的文章信息for (EnterpriseContentBean bean : contentList) {bean.setEnterpriseId(enterpriseId);bean.setEnterpriseName(enterpriseName);List<String> contents = new ArrayList<String>();contents.add(content);bean.setContent(contents);bean.setPubDate(pubDate);System.out.println("pubDate======>" + pubDate);List<String> lableTypes = Arrays.asList(lableType.split(","));bean.setLableType(lableTypes);bean.setResource(resouce);bean.setIsVisited_s("1");}server.addBeans(contentList);server.commit();} catch (SolrServerException e) {state = 1;System.out.println("修改solr数据报错");e.printStackTrace();} catch (IOException e) {state = 1;System.out.println("修改solr数据报错");e.printStackTrace();}return state;}删除主方法public int deletContent(String enterpriseId) {LBHttpSolrServer server = SolrUtil.getSolrServer(ap.getEnterprisenewSolrUrl());int state = 0;try {server.deleteById(enterpriseId);server.commit();} catch (SolrServerException e) {state = 1;System.out.println("删除solr数据报错");e.printStackTrace();} catch (IOException e) {state = 1;System.out.println("删除solr数据报错");e.printStackTrace();}return state;}solr工具类 package com.dinfo.boc.utils;import java.io.IOException;import java.net.MalformedURLException;import java.util.ArrayList;import java.util.Arrays;import java.util.Collection;import java.util.List;import org.apache.solr.client.solrj.SolrQuery;import org.apache.solr.client.solrj.SolrServerException;import org.apache.solr.client.solrj.impl.LBHttpSolrServer;import org.apache.solr.client.solrj.response.QueryResponse;import org.apache.solr.common.SolrDocumentList;import org.apache.solr.common.SolrInputDocument;import com.dinfo.boc.enterprise.bean.EnterpriseContentBean;import com.dinfo.boc.enterprisenew.bean.SolrQueryResult;/*** 与Solr服务器交互的工具类* @author qiuyj**/public class SolrUtil {/*** 获取与指定Solr地址的连接* @param solrUrl* @return*/public static LBHttpSolrServer getSolrServer(String solrUrl){final int ONE_HUNDRED_MS = 10000000;if(solrUrl == null || "".equals(solrUrl)){throw new RuntimeException("Solr url can not be empty!");}LBHttpSolrServer solrServer = null;try {solrServer = new LBHttpSolrServer(solrUrl);solrServer.setConnectionTimeout(ONE_HUNDRED_MS);} catch (MalformedURLException e) {e.printStackTrace();} //SolrUtil.getSolrServer(solrUrl);//solrServer.setDefaultMaxConnectionsPerHost(100);//solrServer.setMaxTotalConnections(100);return solrServer;}/*** 向指定的Solr地址添加一条数据* @param solrUrl* @param doc* @throws Exception*/public static void add(String solrUrl, SolrInputDocument doc) throws Exception {if(doc == null){throw new RuntimeException("SolrInputDocument object can not be null!");}LBHttpSolrServer solr = getSolrServer(solrUrl);solr.add(doc);solr.commit();}/*** 向指定的Solr地址用JavaBean添加一条数据* @param solrUrl* @param obj* @throws Exception*/public static void add(String solrUrl, Object obj) throws Exception {if(obj == null){throw new RuntimeException("Object to be inserted can not be null!");}LBHttpSolrServer solr = getSolrServer(solrUrl);solr.addBean(obj);solr.commit();}/*** 向指定Solr地址批量添加数据* @param solrUrl* @param docs* @throws Exception*/@SuppressWarnings("unchecked")public static void addAll(String solrUrl, Collection<? extends Object> objs) throws Exception {if(objs == null){throw new RuntimeException("Object collection can not be null!");}if(objs.size() == 0){return;}LBHttpSolrServer solr = getSolrServer(solrUrl);if(objs.iterator().next() instanceof SolrInputDocument){solr.add((Collection<SolrInputDocument>)objs);} else {solr.addBeans(objs);}solr.commit();}/*** 根据给定的id,从solr中删除对应信息* @param solrUrl* @param ids*/public static void deleteByIds(String solrUrl, String ... ids) throws Exception {if(ids == null || ids.length == 0){throw new RuntimeException("Ids can not be empty!");}LBHttpSolrServer solr = getSolrServer(solrUrl);solr.deleteById(Arrays.asList(ids));solr.commit();}public static void deleteByIds(String solrUrl, Integer ... ids) throws Exception {if(ids == null || ids.length == 0){throw new RuntimeException("Ids can not be empty!");}List<String> stringIdList = new ArrayList<>(ids.length);for(Integer id : ids){stringIdList.add("" + id);}LBHttpSolrServer solr = getSolrServer(solrUrl);solr.deleteById(stringIdList);solr.commit();}/*** 删除指定Solr路径下符合指定查询条件的数据* @param solrUrl* @param condition* @throws Exception*/public static void deleteByCondition(String solrUrl, String condition) throws Exception {if(condition == null || "".equals(condition)){throw new RuntimeException("Condition can not be empty!");}LBHttpSolrServer solr = getSolrServer(solrUrl);solr.deleteByQuery(condition);solr.commit();}/*** 删除指定Solr路径下的所有数据* @param solrUrl* @throws Exception*/public static void deleteAll(String solrUrl) throws Exception {deleteByCondition(solrUrl, "*:*");}/*** 根据 指定查询条件从Solr中查询数据,并以SolrDocument的List形式返回* @param solrUrl* @param query* @return* @throws Exception*/public static SolrDocumentList queryAndGetSolrDocumentList(String solrUrl, SolrQuery query) throws Exception {if(query == null){throw new RuntimeException("SolrQuery object can not be null!");}LBHttpSolrServer solr = getSolrServer(solrUrl);QueryResponse resp = solr.query(query);return resp.getResults();}/*** 根据 指定查询条件从Solr中查询数据,并以QueryResponse形式返回* @param solrUrl* @param query* @return* @throws Exception*/public static QueryResponse queryAndGetSolrQueryResponse(String solrUrl, SolrQuery query) throws Exception {if(query == null){throw new RuntimeException("SolrQuery object can not be null!");}LBHttpSolrServer solr = getSolrServer(solrUrl);QueryResponse resp = solr.query(query);return resp;}/*** 根据 指定查询条件从Solr中查询数据,并以Java Bean的List形式返回* @param solrUrl* @param query* @param returnClass 返回的List集合的泛型* @return* @throws Exception*/public static <T> List<T> queryAndGetBeanList(String solrUrl, SolrQuery query, Class<T> returnClass) throws Exception {if(query == null){throw new RuntimeException("SolrQuery object can not be null!");}if(returnClass == null){throw new RuntimeException("Return class can not be null!");}LBHttpSolrServer solr = getSolrServer(solrUrl);QueryResponse resp = solr.query(query);return resp.getBeans(returnClass);}/*** 根据 指定查询条件从Solr中查询数据,并以SolrQueryResult对象的形式返回,其中包含List对象和totalCount* @param solrUrl* @param query* @param returnClass 返回的List集合的泛型* @return* @throws Exception*/public static <T> SolrQueryResult<T> queryAndGetSolrQueryResult(String solrUrl, SolrQuery query, Class<T> returnClass) throws Exception {SolrQueryResult<T> result = new SolrQueryResult<T>();if(query == null){throw new RuntimeException("SolrQuery object can not be null!");}if(returnClass == null){throw new RuntimeException("Return class can not be null!");}LBHttpSolrServer solr = getSolrServer(solrUrl);solr.setConnectionTimeout(10000);QueryResponse resp = solr.query(query);List<T> resultList = resp.getBeans(returnClass);long totalCount = resp.getResults().getNumFound();result.setResultList(resultList);result.setTotalCount(totalCount);return result;}/*** 根据 指定查询条件从Solr中查询数据,并以SolrQueryResult对象的形式返回,其中包含List对象和totalCount* @param solrUrl* @param query* @param returnClass 返回的List集合的泛型* @return* @throws Exception*/public static <T> SolrQueryResult<T> queryAndGetSolrQueryResult(LBHttpSolrServer solr, SolrQuery query, Class<T> returnClass) throws Exception {SolrQueryResult<T> result = new SolrQueryResult<T>();if(query == null){throw new RuntimeException("SolrQuery object can not be null!");}if(returnClass == null){throw new RuntimeException("Return class can not be null!");}QueryResponse resp = solr.query(query);List<T> resultList = resp.getBeans(returnClass);long totalCount = resp.getResults().getNumFound();result.setResultList(resultList);result.setTotalCount(totalCount);return result;}/*** 用以过滤一些影响Solr查询的特殊字符,如左右括号、星号等* @param str* @return*/public static String filterSpecialCharacters(String str){if(str == null){return str;}str = str.replace("(", "\(");str = str.replace(")", "\)");str = str.replace("*", "\*");return str;}public static void updateSolrById(LBHttpSolrServer server){SolrQuery query = new SolrQuery();String id="5d495a00a5c8118c03ef0bec0111dd8d";int state=0;String name="新疆金风科技股份有限公司";query.set("q", "enterpriseId:"+id);try {QueryResponse qr = server.query(query);List<EnterpriseContentBean> contentList = qr.getBeans(EnterpriseContentBean.class);//设置需要保存的文章信息for(EnterpriseContentBean bean:contentList){// bean.setEnterpriseId(enterpriseId);bean.setEnterpriseName(name);bean.setResource("东方财富网港股频道");}server.addBeans(contentList);server.commit();} catch (SolrServerException e) {state = 1;e.printStackTrace();} catch (IOException e) {state = 1;e.printStackTrace();}}public static void main(String[] args) {try {LBHttpSolrServerenterpriseServer=new LBHttpSolrServer("http://115.182.226.165:8008/solr/enterprisenew");enterpriseServer.setConnectionTimeout(10000000);updateSolrById(enterpriseServer);System.out.println("over");} catch (MalformedURLException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}

solr oom会导致io变高吗

会。在使用使用solr时,当我们的数据量比较大时,我们就要考虑对solr内存进行调优了,不然solr程序就会通过oom脚本将solr实例杀死,导致程序无法正常使用。

如何对solr中数据进行查询统计并得到全部查

条件组合查询SQL查询语句:SELECT log_id,start_time,end_time,prov_id,city_id,area_id,idt_id,cnt,net_typeFROM v_i_eventWHERE prov_id = 1 AND net_type = 1 AND area_id = 10304 AND time_type = 1 AND time_id >= 20130801 AND time_id <= 20130815ORDER BY log_id LIMIT 10;

如何使用Solr索引MySql数据库

在solr与tomcat整合文章中,我用的索引库是mycore,现在就以这个为例。首先要准备jar包:solr-dataimporthandler-4.8.1.jar、solr-dataimporthandler-extras-4.8.1.jar和mysql-connector-java-5.0.7-bin.jar这三个包到solr的tomcat的webappssolrWEB-INFlib下在这个文件夹的conf下配置两个文件,添加一个文件。先配置solrconfig.xml。在该文件下添加一个新节点。<requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler"><lst name="defaults"><str name="config">data-config.xml</str></lst></requestHandler>在solrconfig.xml的同目录下创建data-config.xml。配置:复制代码<dataConfig><dataSource type="JdbcDataSource"driver="com.mysql.jdbc.Driver"url="jdbc:mysql://localhost:3306/courseman"user="root"password="mysql" /><document><entity name="student"query="SELECT * FROM student"><field column="id" name="id" /><field column="name" name="name" /><field column="gender" name="gender" /><field column="major" name="major" /><field column="grade" name="grade" /></entity></document></dataConfig>复制代码schemal.xml的配置复制代码<?xml version="1.0" ?><!--Licensed to the Apache Software Foundation (ASF) under one or morecontributor license agreements. See the NOTICE file distributed withthis work for additional information regarding copyright ownership.The ASF licenses this file to You under the Apache License, Version 2.0(the "License"); you may not use this file except in compliance withthe License. You may obtain a copy of the License atUnless required by applicable law or agreed to in writing, softwaredistributed under the License is distributed on an "AS IS" BASIS,WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.See the License for the specific language governing permissions andlimitations under the License.--><schema name="example core one" version="1.1"><fieldtype name="string" class="solr.StrField" sortMissingLast="true" omitNorms="true"/><fieldType name="long" class="solr.TrieLongField" precisionStep="0" positionIncrementGap="0"/><fieldType name="int" class="solr.TrieIntField" precisionStep="0" positionIncrementGap="0"/><!-- general --><field name="id" type="int" indexed="true" stored="true" /><field name="gender" type="string" indexed="true" stored="true" /><field name="name" type="string" indexed="true" stored="true" /><field name="major" type="string" indexed="true" stored="true" /><field name="grade" type="string" indexed="true" stored="true" /><field name="_version_" type="long" indexed="true" stored="true"/><!-- field to use to determine and enforce document uniqueness. --><uniqueKey>id</uniqueKey><!-- field for the QueryParser to use when an explicit fieldname is absent --><defaultSearchField>name</defaultSearchField><!-- SolrQueryParser configuration: defaultOperator="AND|OR" --><solrQueryParser defaultOperator="OR"/></schema>复制代码默认的文件不是这样的,稍微改动了一下。field 的type类型是根据fieldtype 的name定义的。class是solr自定义的不能更改。shcema.xml文件的field字段的属性介绍:(1)name:字段名称(2)type:字段类型(此处type不是java类型,而是下面定义的fieldType)(3)indexed:是否索引看true--solr会对这个字段进行索引,只有经过索引的字段才能被搜索、排序等;false--不索引(4)stored:是否存储看true--存储,当我们需要在页面显示此字段时,应设为true,否则false。(5)required:是否必须看true--此字段为必需,如果此字段的内容为空,会报异常;false--不是必需(6)multiValued:此字段是否可以保存多个值看(7)omitNorms:是否对此字段进行解析看有时候我们想通过某个字段的完全匹配来查询信息,那么设置 indexed="true"、omitNorms="true"。(8)default:设置默认值有这样一个FieldType描述:<fieldType name="text_general" positionIncrementGap="100"><analyzer type="index"><tokenizer/><filter ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true" /><filter/></analyzer><analyzer type="query"><tokenizer/><filter ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true" /><filter synonyms="synonyms.txt" ignoreCase="true" expand="true"/><filter/></analyzer></fieldType>属性说明:(1)name:类型名称,<field>中的type引用的就是这个name(2)class:solr自定义的类型(3)<analyzer type="index">定义建立索引时使用的分词器及过滤器(4)<analyzer type="query">定义搜索时所使用的分词器及过滤器(5)<tokenizer/>定义分词器(6)<filter/>定义过滤器uniqueKey属性<uniqueKey>id</uniqueKey>类似于数据表数据的id,solr索引库中最好定义一个用于标示document唯一性的字段,此字段主要用于删除document。defaultSearchField属性就是你在做query搜寻时若不指定特定栏位做检索时, Solr就会只查这个栏位.<defaultSearchField>default</defaultSearchField>copyField属性是用来复制你一个栏位里的值到另一栏位用. 如你可以将name里的东西copy到major里, 这样solr做检索时也会检索到name里的东西.<copyField source="name" dest="major"/>现在可以将数据库的数据导入solr了。点击Execute就可以了。

solr有多个查询字段时查询语句的格式

solr query和filter执行顺序: 1,fq首先在cache中查找,如果命中,则返回DocSet 2,如果没有命中,则在索引中查找,返回DocSet并cache 3,1,2步的DocSet合并为一个DocSet 4,q的查询结果也被传递过来,选取两个结果集的相同Document ID

如何理解solr的core和collection

 collection英 [ku0259u02c8leku0283n] 美 [ku0259u02c8lu025bku0283u0259n]  n.征收; 收集,采集; 收藏品; 募捐;  [例句]Computer systems to speed up collection of information  加速信息收集的计算机系统  [其他]复数:collections 形近词: bilection election selection  --  core英 [ku0254:(r)] 美 [ku0254r, kor]  n.中心,核心,精髓; 果心,果核; [地质学] 地核; [计] 磁心;  vt.去(果)核,挖去…的果心; 提取岩芯; (样品)  [例句]Temperatures in this range, it seems, help facilitate the decrease in core body temperature that in turn initiates sleepiness.  温度处于这个范围内,似乎利于中心体温的降低,而中心体温降低反过来利于睡眠。  [其他]第三人称单数:cores 复数:cores 现在分词:coring 过去式:cored 过去分词:cored

solr如何让全词匹配结果在最前面

先,只要在搜索的时候增加title字段的权重即可,如果改动较小的情况下,updatetime靠前,标题匹配靠前,这个比较容易sort=updatetime desc 其次,如果想绝对的靠前

solr对java程序员重要吗

  还是重要的。  Solr是一个独立的企业级搜索应用服务器,它对外提供类似于Web-service的API接口。用户可以通过http请求,向搜索引擎服务器提交一定格式的XML文件,生成索引;也可以通过Http Get操作提出查找请求,并得到XML格式的返回结果。

如何查处solr中所有的core

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<Connector port="8080" protocol="HTTP/1.1"connectionTimeout="20000"redirectPort="8443" URIEncoding="UTF-8" />4、创建solr.xml,存放在路径:tomcat/conf/Catalina/localhost/solr.xml,内容:<Context path="/solr" docBase="C:Tomcat 7.0webappssolr.war"debug="0" crossContext="true"><Environment name="solr/home" type="java.lang.String" value="C:Tomcat 7.0insolr" override="true" /></Context>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.jar6、在C:Tomcat 7.0insolrcollection1conf 下的solrconfig.xml增加以下数据库配置:<requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler"> <lst name="defaults"> <str name="config">data-config.xml</str> </lst> </requestHandler>7、将tomcatinsolrcollection1conf下增加data-config.xml文件,内容如下:<dataConfig> <dataSource type="JdbcDataSource" driver="com.mysql.jdbc.Driver" url="jdbc:mysql://192.168.1.221:3306/tmsdb" user="root" password="123456"/> <document name="content"> <entity name="node" query="select id,author,title,content from solrdb"> <field column="id" name="id" /> <field column="author" name="author" /> <field column="title" name="title" /> <field column="content" name="content" /></entity> </document> </dataConfig>8、增加中文分词器,ik-analyzer的配置如下:①目前的中文分词主要有两种 1,基于中科院ICTCLAS的隐式马尔科夫hhmm算法的中文分词器,例如smartcn等。(不支持自定义扩展词库) 2,基于正向迭代最细粒度切分算法(正向最大匹配并且最细分词)例如IK,庖丁等(支持自定义扩展词库) 安装分词前,可以去下载IK的分词包 :IK-Analyzer-4.7.1-0.0.1-SNAPSHOT.jar下载完毕后,将此包放进tomcatsolr的WEB-INFlib下面:tomcatwebappssolrWEB-INFlib 。下面需要在solr的schemal.xml进行分词器注册:<!-- 配置IK分词器 --> <fieldType name="text_ik" class="solr.TextField" positionIncrementGap="100"><analyzer type="index"> <!-- 分词--> <tokenizer class="org.wltea.analyzer.lucene.IKTokenizerFactory"/> <!-- 禁用词过滤根据情况使用--> <!-- <filter class="org.wltea.analyzer.lucene.IKStopFilterFactory"/> --> </analyzer> <analyzer type="query"> <!-- 分词--> <tokenizer class="org.wltea.analyzer.lucene.IKTokenizerFactory"/> <!-- 禁用词过滤根据情况使用--> <!-- <filter class="org.wltea.analyzer.lucene.IKStopFilterFactory"/>--> </analyzer> </fieldType>最后还得配置一个引用字段就OK了<field name="ik" type="text_ik" indexed="true" stored="true" multiValued="true"/>②它的安装部署十分简单,将IKAnalyzer2012.jar部署亍项目的lib目录中;IKAnalyzer.cfg.xml不stopword.dic文件放置在class根目录(对于web项目,通常是WEB-I NF/classes目彔,同hibernate、log4j等配置文件相同)下即可 ;然后配置solr4.7中schema.xml配置解析器:<schema name="example" version="1.1"> …… <fieldType name="text" class="solr.TextField"> <analyzer class="org.wltea.analyzer.lucene.IKAnalyzer"/> </fieldType>…… </schema>
 1 2 3 4 5 6  下一页  尾页