solr数据类型(solr dataimport怎样定时导入修改和新增的数据)

本文目录
solr dataimport怎样定时导入修改和新增的数据
数据库表的更改:
前面已经创建好了一个UserInfo的表,这里为了能够进行增量导入,需要新增一个字段,类型为TIMESTAMP,默认值为CURRENT_TIMESTAMP。
solr 有几种导入数据的方式
solr数据导入,经过这几天的查资料,我觉得solr数据导入可以有三种方式:
1、编写数据xml文件,通过post.jar导入;
2、通过DIH导入;
3、利用solrj导入数据;
***隐藏网址***
具体的代码解释如下:
***隐藏网址***
HttpSolrServer server = new HttpSolrServer(url);
//If you wish to delete all the data from the index, do this
//server.deleteByQuery( "*:*" );
//Construct a document
SolrInputDocument doc1 = new SolrInputDocument();
doc1.addField( "id", "id1_solrj" );
doc1.addField( "type", "doc1_solrj" );
doc1.addField( "name", "name1_solrj" );
//Construct another document
SolrInputDocument doc2 = new SolrInputDocument();
doc2.addField( "id", "id2" );
doc2.addField( "type", "doc2_solrj" );
doc2.addField( "name", "name2_solrj" );
//Create a collection of documents
Collection《SolrInputDocument》 docs = new ArrayList《SolrInputDocument》();
docs.add(doc1);
docs.add(doc2);
//Do a commit
try {
server.add(docs);
server.commit();
} catch (SolrServerException e) {
System.out.println("server commit error, error code:");
e.printStackTrace();
} catch (IOException e) {
System.out.println("server commit error, error code:");
e.printStackTrace();
}
}
该端代码执行后报异常:expect mime type application/octet-stream but got text/html
没找到这个的解决办法,根据提示好像是说期望的类型和服务器反馈的类型不匹配
最后的解决办法是这样的:
之前在配置solr服务器的时候将solr解压路径\solr-4.8.1\example\solr下的solr.xml用\solr-4.8.1\example\multicore下的solr.xml文件进行了替换,目的是为了引入core0和core1,现在需要将这个动作进行回滚,并且修改collection1下的conf下的schema.xml文件,修改为对应的需要的列定义。然后执行以上的代码就不会产生问题。
原因我也不太明白,感觉应该是collection1的配置和core1、core0、乃至之前文章提到过的solrtest的配置应该不太一样。原因待查。不过现在已经可以通过客户端的方式将数据导入solr服务器,并在前端可以查询到相应的数据。
solr schema 修改后会自动重建索引吗
配置solr字段、
schema.xml 文件里配置
先讲解一下,里面的一些字段
1、 《types》 ... 《/types》 表示类型,数据类型
《fieldType name="string" class="solr.StrField" sortMissingLast="true" omitNorms="true"/》 《fieldType name="boolean" class="solr.BoolField" sortMissingLast="true" omitNorms="true"/》 《fieldtype name="binary" class="solr.BinaryField"/》 《fieldType name="int" class="solr.TrieIntField" precisionStep="0" omitNorms="true" positionIncrementGap="0"/》 《fieldType name="float" class="solr.TrieFloatField" precisionStep="0" omitNorms="true" positionIncrementGap="0"/》 《fieldType name="long" class="solr.TrieLongField" precisionStep="0" omitNorms="true" positionIncrementGap="0"/》 《fieldType name="double" class="solr.TrieDoubleField" precisionStep="0" omitNorms="true" positionIncrementGap="0"/》
不难理解上面就是配置定义solr 数据类型、上面都是solr里面的类型,那么我们也可以配置自已的数据类型,
比如:我们要用到中文分词 的时候,这里配一下IKanalyzer 分词 、并配置它的索引和分词。
《fieldType name="text_cn" class="solr.TextField" positionIncrementGap="100"》 《!--《analyzer class="org.wltea.analyzer.lucene.IKAnalyzer"/》 --》 《analyzer type="index"》 《tokenizer class="org.wltea.analyzer.solr.IKTokenizerFactory" isMaxWordLength="false"/》 《filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true" /》 《filter class="solr.StandardFilterFactory"/》 《filter class="solr.RemoveDuplicatesTokenFilterFactory"/》 《/analyzer》 《analyzer type="query"》 《tokenizer class="org.wltea.analyzer.solr.IKTokenizerFactory" isMaxWordLength="true"/》 《filter class="solr.StopFilterFactory" ignoreCase="false" words="stopwords.txt" enablePositionIncrements="true" /》 《filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/》 《filter class="solr.StandardFilterFactory"/》 《filter class="solr.RemoveDuplicatesTokenFilterFactory"/》 《/analyzer》 《/fieldType》
小解释一下field 里面的一些属性:
name: 字段类型名 class: java类名 indexed: 缺省true。 说明这个数据应被搜索和排序,如果数据没有indexed,则stored应是true。 stored: 缺省true。说明这个字段被包含在搜索结果中是合适的。如果数据没有stored,则indexed应是true。 sortMissingLast: 指没有该指定字段数据的document排在有该指定字段数据的document的后面 sortMissingFirst: 指没有该指定字段数据的document排在有该指定字段数据的document的前面 omitNorms: 字段的长度不影响得分和在索引时不做boost时,设置它为true。一般文本字段不设置为true。 termVectors: 如果字段被用来做more like this 和highlight的特性时应设置为true。 compressed: 字段是压缩的。这可能导致索引和搜索变慢,但会减少存储空间,只有StrField和TextField是可以压缩,这通常适合字段的长度超过200个字符。 multiValued: 字段多于一个值的时候,可设置为true。 positionIncrementGap: 和multiValued 一起使用,设置多个值之间的虚拟空白的数量
solr自定义排序
缺省solr就是按照score desc进行排序的,至于为何你的查询结果和数据库不一样,那是因为solr和数据库的索引方式不同引起的,不知道你的schema怎么定义的,solr中主要根据doc中term出现的频率也叫TF(term frequency)来判断文档的价值,即如果一个单词在一个文档中出现的频率高则由于那些在很多不同文档中出现的单词的优先级。

本文相关文章:
mysql怎么建立数据库(如何用NavicatforMySql创建数据库与数据表)
2026年10月4日 23:50
电脑自带的word用不了怎么办(升级了win10之后,原本电脑里的Word和Excel打不开了)
2026年8月25日 04:00
oracle11g安装和配置(oracle数据库安装在什么地方)
2026年10月10日 09:10
python中的in是什么意思(python中for i % 7 in [5,0]是什么意思)
2026年10月1日 21:00
eof在python语言中表示什么(在Python中,“EOFError: EOF when reading a line”怎么解决)
2026年9月28日 10:10
keyboard operator用英语怎么说(keyboardperator用英语怎么说)
2026年9月25日 15:00
ajax设置同步(for循环ajax带来的问题这里使用的是jquery封装的ajaxajax设置了同步,当快速执行ajax会出问题)
2026年9月18日 12:00
witheditor是什么状态(文章已提交就是 with editor是什么状态)
2026年9月9日 02:10
更多文章:
在from子句中可以出现(如何在from 子句中嵌套查询下面的语句在access中出错!)
2026年10月11日 05:20
countif函数统计个数怎么用(countif函数怎么用 详解Excel中countif函数的使用方法)
2026年10月11日 03:30
正则匹配数字之前的字符(正则表达式如何匹配前面是数字、中间是“/”、后面也是数字,就像2/3专业的模式)
2026年10月11日 03:00
orlnsertbootmediinselected(我电脑开机显示这个是什么意思or insert boot media in select)
2026年10月10日 23:00
display的用法(display是什么意思 详解display的含义和用法)
2026年10月10日 22:00
html全部居中代码(怎么让网页居中显示,html如何让网页居中)
2026年10月10日 21:10



