当前位置:首页 » 操作系统 » solr连接数据库

solr连接数据库

发布时间: 2022-04-27 13:07:00

Ⅰ 如何使用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的webapps\solr\WEB-INF\lib下
在这个文件夹的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 more
contributor license agreements. See the NOTICE file distributed with
this work for additional information regarding right 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 with
the License. You may obtain a of the License at

Unless required by applicable law or agreed to in writing, software
distributed 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 and
limitations 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>
Field属性
是用来复制你一个栏位里的值到另一栏位用. 如你可以将name里的东西到major里, 这样solr做检索时也会检索到name里的东西.
<Field source="name" dest="major"/>
现在可以将数据库的数据导入solr了。
点击Execute就可以了。

Ⅱ solr怎么与数据库滞

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

Ⅲ 有数据库为什么要solr

严格来说,lucene负责数据存储,而solr只是一个引擎提供搜索和插入而已,跟数据库的解释器一样,有什么好处呢,比如一个数据库有一个字段存了1000个字,你想从这些字里面搜一个词的时候,普通的数据库只会让你使用like去查询,他会遍历每个字去模糊匹配,效率很低,而且有些是无法查询的,当然除了像一些特殊的数据库带有分词,比如postgresql,那lucene做的事情就是分词,然后去匹配分词的词中是否有你想搜的词就好了,当然了,为了提高这种检索效率和内存节省底层做了很复杂的事情,可以这么简单的认为,全文搜索这件事情上数据库是无法满足的

Ⅳ solr+tomcat如何配置

tomcat配置数据源solr使用数据源

1、tomcat中配置数据源(注:需要拷贝jdbc相关jar包到tomcat中。tomcat6.x/lib目录下,注意tomcat6.0以下的版本在tomcat5.x/common/lib/目录下)
在server.xml文件,找到“Engine-> Host -> Context”,在其下面配置主要针对某一项目的数据源使用。
在context.xml文件,找到“Context”,在其下面配置可以让所有项目使用。

在Context下面配置数据源如下:
<Resource driverClassName="oracle.jdbc.driver.OracleDriver" maxActive="1000" maxIdle="30" maxWait="-1" name="jdbc/orcl" password="bb" type="javax.sql.DataSource" url="jdbc:oracle:thin:@127.0.0.1:1521:orcl" username="aa"/>

数据源相关参数说明:
<Resource
name="jdbc/bookstore" //这里的名字随便起,后面要用到
auth="Container" //auth有两个值可选“Application”和“Container”
type="javax.sql.DataSource" //指定资源所属的Java类的完整限定名
driverClassName="com.microsoft.sqlserver.jdbc.SQLServerDriver"
//这里仅为SqlServer2005的驱动类名
//如果为SqlServer2000:com.microsoft,sqlserver,jdbc,SQLServerDriver
url="jdbc:sqlserver://localhost:1433;DataBaseName=bookstore"
username="sa"
//登录名
password="000000"
//登录密码
maxActive="100"
//指定在连接池中数据库连接的最大数目,设为0表示无限制
maxIdle="30"
//指定在连接池中保留的空闲的数据库连接的最大数目,设为0表示无限制
maxWait="1000"/>
//指定等待一个数据库连接成为可用状态的最大时间,以毫秒为单位,设为-1表示无限制。
2、solr使用配置好的数据源
db-data-config.xml文件配置如下内容:
<dataSource name="ds-1" jndiName="java:comp/env/jdbc/orcl" type="JdbcDataSource" batch-size="1000" />
注意:“jdbc/orcl”为已配置的数据源名。如果是在tomcat中配置的数据源则jndiName,需要在你配置的数据源名前加“java:comp/env”。在其他容器中配置不用加此内容。
3、solr直接配置数据库连接
db-data-config.xml文件配置如下内容:
<dataSource name="ds-1" type="JdbcDataSource" driver="oracle.jdbc.driver.OracleDriver" url="jdbc:oracle:thin:@127.0.0.1:1521:orcl" user="aa" password="bb" />

注意:如果应用服务器上未安装oracle客户端,连接数据库服务url写法如下:
jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.1.100)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=orcl)))
说明“192.168.1.100”数据库服务器ip,“orcl”数据库oid

Ⅳ 如何solr结合mysql全文搜索

solr跟mysql是独立的,

要通过solr来做全文索引,你就明确mysql那些表的字段需要做搜索。
然后mysql的增删改,你都必须在solr服务器这边做对应的请求。

最后通过调用solr的查询接口,solr会返回相应的信息,包括mysql对应数据的id以及匹配的分词信息。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25

$options = array
(
'hostname' => 'localhost',
'login' => 'username',
'password' => 'password',
'port' => '8983',
);
$client = new SolrClient($options);

//添加
$doc = new SolrInputDocument();
$doc->addField('id', 1);
$doc->addField('content', '如何solr结合mysql全文搜索');
$updateResponse = $client->addDocument($doc);
$client->commit();
updateResponse->getResponse();

//查询
$query = new SolrQuery();
$query->setQuery('*结合mysql*');
$query->setStart(0);
$query->setRows(50);
$query->addField('id');
$query_response = $client->query($query);
$response = $query_response->getResponse();

Ⅵ solr连接mysql数据库怎么用

<bool name="mutable">true</bool>
<str name="managedSchemaResourceName">managed-schema</str>
</schemaFactory> -->

<!-- <processor class="solr.">
<str name="defaultFieldType">strings</str>
<lst name="typeMapping">
<str name="valueClass">java.lang.Boolean</str>
<str name="fieldType">booleans</str>
</lst>
<lst name="typeMapping">
<str name="valueClass">java.util.Date</st

Ⅶ solr5.5.4怎么将已经建立好的mysql数据库导入到dataimport

新建一个数据表,这里我选择的是mysql数据库,具体如何安装我这里就不说了,具体代码如下。这里还需要mysql的驱动包,需要放入到/opt/tomcat6/lib目录下,或者放到/opt/tomcat6/webapps/solr/WEB-INF/lib目录下,自行去mysql官网下载jdbc驱动包,在数据导入的时候需要用到!

Ⅷ solr链接数据库时显示显示no information avaliable怎么办

说明如下:
query是获取全部数据的SQL(solr从sql中获取那些数据),多列
deltaImportQuery是获取增量数据时使用的SQL(数据库新增数据追加到solr的数据),多列
deltaQuery是获取pk的SQL(数据库新增数据是,追加到solr的数据时的条件,根据id ,条件是最后一次获取的时间,${dataimporter.last_index_time,最后获取的时间})!

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

关系型数据库有四个显着的特征,即安全性、完整性、并发性和监测性。数据库的安全性就是要保证数据库中数据的安全,防止未授权用户随意修改数据库中的数据,确保数据的安全。在大多数数据库管理系统中,主要是通过许可来保证数据库的安全性。完整性是数据库的一个重要特征,也是保证数据库中的数据切实有效、防止错误、实现商业规则的一种重要机制。在数据库中,区别所保存的数据是无用的垃圾还是有价值的信息,主要是依据数据库的完整性是否健全。在SQL Server 7.0中,数据的完整性是通过一系列逻辑来保障的,这些逻辑分为三个方面,即实体完整性、域完整性和参考完整性。对任何系统都可以这样说,没有监测,就没有优化。这句话用在数据库管理系统方面,也是切合实际的。只有通过对数据库进行全面的性能监测,也才能发现影响系统性能的因素和瓶颈,才能针对瓶颈因素,采取切合实际策略,解决问题,提高系统的性能。

热点内容
动态规划01背包算法 发布:2024-11-05 22:17:40 浏览:849
nasm编译器如何安装 发布:2024-11-05 22:01:13 浏览:180
登录密码在微信的哪里 发布:2024-11-05 22:00:29 浏览:739
c防止反编译工具 发布:2024-11-05 21:56:14 浏览:247
安卓虚拟机怎么用 发布:2024-11-05 21:52:48 浏览:344
php时间搜索 发布:2024-11-05 20:58:36 浏览:478
燕山大学编译原理期末考试题 发布:2024-11-05 20:13:54 浏览:527
华为电脑出现临时服务器 发布:2024-11-05 20:05:08 浏览:408
斗战神免费挖矿脚本 发布:2024-11-05 19:53:25 浏览:665
网吧服务器分别是什么 发布:2024-11-05 19:45:32 浏览:392