solr自动提取数据库(solr导入数据库表)

软件开发 5
本篇文章给大家谈谈solr自动提取数据库,以及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下

本篇文章给大家谈谈solr自动提取数据库,以及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="97d24986b97dd43d 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 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 with

the License. You may obtain a copy 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="4986b97dd43d6005 solr.StrField" sortMissingLast="true" omitNorms="true"/

fieldType name="long" class="b97dd43d6005bab3 solr.TrieLongField" precisionStep="0" positionIncrementGap="0"/

fieldType name="int" class="a8766d82c07dca99 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. --

uniqueKeyid/uniqueKey

!-- field for the QueryParser to use when an explicit fieldname is absent --

defaultSearchFieldname/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属性

uniqueKeyid/uniqueKey

类似于数据表数据的id,solr索引库中最好定义一个用于标示document唯一性的字段,此字段主要用于删除document。

defaultSearchField属性

就是你在做query搜寻时若不指定特定栏位做检索时, Solr就会只查这个栏位.

defaultSearchFielddefault/defaultSearchField

copyField属性

是用来复制你一个栏位里的值到另一栏位用. 如你可以将name里的东西copy到major里, 这样solr做检索时也会检索到name里的东西.

copyField source="name" dest="major"/

现在可以将数据库的数据导入solr了。

点击Execute就可以了。

solr中的数据从哪儿来

solr的数据有很多来源方式,数据库只是其中一种,可以看着这个Solr安装部署

solr存在哪些问题

最近搭建一个全文检索平台。最初考虑只采用lucene,然后自己写索引构建程序、检索框架等,类似osc @红薯 的方案,以前也做过比较熟悉。但有两个问题,1.比较复杂,工作量和维护量都比较大。2. 检索会有一定的延时。

看了看Solr决定采用solr,可以节省很大一部分开发时间。但有几个问题想请教下 osc 里的全文检索高手,希望大家不吝赐教:

1.第一种方案,solr配置数据库,自动处理建索引。这样会不会延时很大,无法做到实时检索看

2.第二种方案,通过solrj客户端在应用端 处理建索引问题,比如在发布一篇文章的时候,通过http 提交到solr 服务端上同时建索引,这样能不能达到实时检索看而且同时这个时候 应用端也会通过 http 检索 solr, 建索引检索同时进行,这样访问量大的时候会不会导致 内存泄露、索引文件磁盘I/O负载不了的问题看

有经验的同学能不能讨论下?那种方案较好点,对实时性要求高点。或者配置上怎么优化看

当然这个项目是企业内部应用,访问量不会太大,服务器资源有限,所以无法用到solr的分布式特性,比如索引复制、多核来解决这些问题。而且由于可能会部署在 windows下,排除了以前做过的sphinx、nlpbamboo 基于Postgresql数据库的方案。

solr的数据怎么来的?

solr是一个全文检索数据库

对外提供了数据读取和写入的接口

数据当然主要是从接口来 主要是http通信,

你要按solr文档数据提交格式来写入数据

细节要查文档了

关于solr自动提取数据库和solr导入数据库表的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

solr自动提取数据库
扫码二维码