上一篇讲述了solr的安装启动过程,这一篇讲述如何导入数据到solr里。
一、准备数据
1.1 学生相关表
创建学生表、学生专业关联表、专业表、学生行业关联表、行业表、基础信息表,并创建一条小白的信息。由于navicat收费,所以这里利用HeidiSQL连接本地的MySql建立表。
1.2查询数据
查询出要导入solr的数据
二、添加jar包
2.1 添加mysql数据库驱动包
下载jar包,并放入到../solr-7.7.2/server/solr-webapp/webapp/WEB-INF/lib中。
http://central.maven.org/maven2/mysql/mysql-connector-java/5.1.34/
2.2 添加solr索引导入包
从../dist目录复制solr-dataimporthandler-7.7.2、solr-dataimporthandler-extras-7.7.2两个jar包到../solr-7.7.2/server/solr-webapp/webapp/WEB-INF/lib
复制到:
三、修改配置
3.1 添加data-config.xml文件
在core1/conf目录下添加data-config.xml文件,内容为:
xml version="1.0" encoding="UTF-8" ?> <dataConfig> <dataSource type="JdbcDataSource" driver="com.mysql.jdbc.Driver" url="jdbc:mysql://192.168.33.95:3306/solr" user="root" password="123456" /> <document name="testDoc"> <entity name="tj_student" query="SELECT ts.*, tf.field_name, ti.industry_name FROM tj_student ts LEFT JOIN tj_user_field tuf ON ts.id=tuf.student_id LEFT JOIN tj_field tf ON tuf.user_field_id=tf.id LEFT JOIN tj_user_industry tui ON ts.id=tui.student_id LEFT JOIN tj_industry ti ON tui.industry_id=ti.id"> <entity name="user_info" query="SELECT * FROM tj_user_info WHERE id=${tj_student.id}"> entity> entity> document> dataConfig>
3.2 修改solrconfig.xml文件
在core1/conf目录下修改solrconfig.xml文件,添加内容:

xml version="1.0" encoding="UTF-8" ?> <config> <luceneMatchVersion>7.7.2luceneMatchVersion> <lib dir="${solr.install.dir:../../../..}/contrib/extraction/lib" regex=".*\.jar" /> <lib dir="${solr.install.dir:../../../..}/dist/" regex="solr-cell-\d.*\.jar" /> <lib dir="${solr.install.dir:../../../..}/contrib/clustering/lib/" regex=".*\.jar" /> <lib dir="${solr.install.dir:../../../..}/dist/" regex="solr-clustering-\d.*\.jar" /> <lib dir="${solr.install.dir:../../../..}/contrib/langid/lib/" regex=".*\.jar" /> <lib dir="${solr.install.dir:../../../..}/dist/" regex="solr-langid-\d.*\.jar" /> <lib dir="${solr.install.dir:../../../..}/contrib/velocity/lib" regex=".*\.jar" /> <lib dir="${solr.install.dir:../../../..}/dist/" regex="solr-velocity-\d.*\.jar" /> <dataDir>${solr.data.dir:}dataDir> <directoryFactory name="DirectoryFactory" class="${solr.directoryFactory:solr.NRTCachingDirectoryFactory}"/> <codecFactory class="solr.SchemaCodecFactory"/> <indexConfig> <lockType>${solr.lock.type:native}lockType> indexConfig> <jmx /> <updateHandler class="solr.DirectUpdateHandler2"> <updateLog> <str name="dir">${solr.ulog.dir:}str> <int name="numVersionBuckets">${solr.ulog.numVersionBuckets:65536}int> updateLog> <autoCommit> <maxTime>${solr.autoCommit.maxTime:15000}maxTime> <openSearcher>falseopenSearcher> autoCommit> <autoSoftCommit> <maxTime>${solr.autoSoftCommit.maxTime:-1}maxTime> autoSoftCommit> updateHandler> <query> <maxBooleanClauses>${solr.max.booleanClauses:1024}maxBooleanClauses> <filterCache class="solr.FastLRUCache" size="512" initialSize="512" autowarmCount="0"/> <queryResultCache class="solr.LRUCache" size="512" initialSize="512" autowarmCount="0"/> <documentCache class="solr.LRUCache" size="512" initialSize="512" autowarmCount="0"/> <cache name="perSegFilter" class="solr.search.LRUCache" size="10" initialSize="0" autowarmCount="10" regenerator="solr.NoOpRegenerator" /> <enableLazyFieldLoading>trueenableLazyFieldLoading> <queryResultWindowSize>20queryResultWindowSize> <queryResultMaxDocsCached>200queryResultMaxDocsCached> <listener event="newSearcher" class="solr.QuerySenderListener"> <arr name="queries"> arr> listener> <listener event="firstSearcher" class="solr.QuerySenderListener"> <arr name="queries"> arr> listener> <useColdSearcher>falseuseColdSearcher> query> <requestDispatcher> <httpCaching never304="true" /> requestDispatcher> <requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler"> <lst name="defaults"> <str name="config">data-config.xmlstr> lst> requestHandler> <requestHandler name="/select" class="solr.SearchHandler"> <lst name="defaults"> <str name="echoParams">explicitstr> <int name="rows">10int> lst> requestHandler> <requestHandler name="/query" class="solr.SearchHandler"> <lst name="defaults"> <str name="echoParams">explicitstr> <str name="wt">jsonstr> <str name="indent">truestr> lst> requestHandler> <requestHandler name="/browse" class="solr.SearchHandler" useParams="query,facets,velocity,browse"> <lst name="defaults"> <str name="echoParams">explicitstr> lst> requestHandler> <initParams path="/update/**,/query,/select,/tvrh,/elevate,/spell,/browse"> <lst name="defaults"> <str name="df">_text_str> lst> initParams> <requestHandler name="/update/extract" startup="lazy" class="solr.extraction.ExtractingRequestHandler" > <lst name="defaults"> <str name="lowernames">truestr> <str name="fmap.meta">ignored_str> <str name="fmap.content">_text_str> lst> requestHandler> <searchComponent name="spellcheck" class="solr.SpellCheckComponent"> <str name="queryAnalyzerFieldType">text_generalstr> <lst name="spellchecker"> <str name="name">defaultstr> <str name="field">_text_str> <str name="classname">solr.DirectSolrSpellCheckerstr> <str name="distanceMeasure">internalstr> <float name="accuracy">0.5float> <int name="maxEdits">2int> <int name="minPrefix">1int> <int name="maxInspections">5int> <int name="minQueryLength">4int> <float name="maxQueryFrequency">0.01float> lst> searchComponent> <requestHandler name="/spell" class="solr.SearchHandler" startup="lazy"> <lst name="defaults"> <str name="spellcheck.dictionary">defaultstr> <str name="spellcheck">onstr> <str name="spellcheck.extendedResults">truestr> <str name="spellcheck.count">10str> <str name="spellcheck.alternativeTermCount">5str> <str name="spellcheck.maxResultsForSuggest">5str> <str name="spellcheck.collate">truestr> <str name="spellcheck.collateExtendedResults">truestr> <str name="spellcheck.maxCollationTries">10str> <str name="spellcheck.maxCollations">5str> lst> <arr name="last-components"> <str>spellcheckstr> arr> requestHandler> <searchComponent name="tvComponent" class="solr.TermVectorComponent"/> <requestHandler name="/tvrh" class="solr.SearchHandler" startup="lazy"> <lst name="defaults"> <bool name="tv">truebool> lst> <arr name="last-components"> <str>tvComponentstr> arr> requestHandler> <searchComponent name="terms" class="solr.TermsComponent"/> <requestHandler name="/terms" class="solr.SearchHandler" startup="lazy"> <lst name="defaults"> <bool name="terms">truebool> <bool name="distrib">falsebool> lst> <arr name="components"> <str>termsstr> arr> requestHandler> <searchComponent name="elevator" class="solr.QueryElevationComponent" > <str name="queryFieldType">stringstr> searchComponent> <requestHandler name="/elevate" class="solr.SearchHandler" startup="lazy"> <lst name="defaults"> <str name="echoParams">explicitstr> lst> <arr name="last-components"> <str>elevatorstr> arr> requestHandler> <searchComponent class="solr.HighlightComponent" name="highlight"> <highlighting> <fragmenter name="gap" default="true" class="solr.highlight.GapFragmenter"> <lst name="defaults"> <int name="hl.fragsize">100int> lst> fragmenter> <fragmenter name="regex" class="solr.highlight.RegexFragmenter"> <lst name="defaults"> <int name="hl.fragsize">70int> <float name="hl.regex.slop">0.5float> <str name="hl.regex.pattern">[-\w ,/\n\"']{20,200}str> lst> fragmenter> <formatter name="html" default="true" class="solr.highlight.HtmlFormatter"> <lst name="defaults"> <str name="hl.simple.pre">]]>str> <str name="hl.simple.post">]]>str> lst> formatter> <encoder name="html" class="solr.highlight.HtmlEncoder" /> <fragListBuilder name="simple" class="solr.highlight.SimpleFragListBuilder"/> <fragListBuilder name="single" class="solr.highlight.SingleFragListBuilder"/> <fragListBuilder name="weighted" default="true" class="solr.highlight.WeightedFragListBuilder"/> <fragmentsBuilder name="default" default="true" class="solr.highlight.ScoreOrderFragmentsBuilder"> fragmentsBuilder> <fragmentsBuilder name="colored" class="solr.highlight.ScoreOrderFragmentsBuilder"> <lst name="defaults"> <str name="hl.tag.pre"> ,, ,, ,, ,, ,]]>str> <str name="hl.tag.post">]]>str> lst> fragmentsBuilder> <boundaryScanner name="default" default="true" class="solr.highlight.SimpleBoundaryScanner"> <lst name="defaults"> <str name="hl.bs.maxScan">10str> <str name="hl.bs.chars">.,!? str> lst> boundaryScanner> <boundaryScanner name="breakIterator" class="solr.highlight.BreakIteratorBoundaryScanner"> <lst name="defaults"> <str name="hl.bs.type">WORDstr> <str name="hl.bs.language">enstr> <str name="hl.bs.country">USstr> lst> boundaryScanner> highlighting> searchComponent> <updateProcessor class="solr.UUIDUpdateProcessorFactory" name="uuid"/> <updateProcessor class="solr.RemoveBlankFieldUpdateProcessorFactory" name="remove-blank"/> <updateProcessor class="solr.FieldNameMutatingUpdateProcessorFactory" name="field-name-mutating"> <str name="pattern">[^\w-\.]str> <str name="replacement">_str> updateProcessor> <updateProcessor class="solr.ParseBooleanFieldUpdateProcessorFactory" name="parse-boolean"/> <updateProcessor class="solr.ParseLongFieldUpdateProcessorFactory" name="parse-long"/> <updateProcessor class="solr.ParseDoubleFieldUpdateProcessorFactory" name="parse-double"/> <updateProcessor class="solr.ParseDateFieldUpdateProcessorFactory" name="parse-date"> <arr name="format"> <str>yyyy-MM-dd'T'HH:mm:ss.SSSZstr> <str>yyyy-MM-dd'T'HH:mm:ss,SSSZstr> <str>yyyy-MM-dd'T'HH:mm:ss.SSSstr> <str>yyyy-MM-dd'T'HH:mm:ss,SSSstr> <str>yyyy-MM-dd'T'HH:mm:ssZstr> <str>yyyy-MM-dd'T'HH:mm:ssstr> <str>yyyy-MM-dd'T'HH:mmZstr> <str>yyyy-MM-dd'T'HH:mmstr> <str>yyyy-MM-dd HH:mm:ss.SSSZstr> <str>yyyy-MM-dd HH:mm:ss,SSSZstr> <str>yyyy-MM-dd HH:mm:ss.SSSstr> <str>yyyy-MM-dd HH:mm:ss,SSSstr> <str>yyyy-MM-dd HH:mm:ssZstr> <str>yyyy-MM-dd HH:mm:ssstr> <str>yyyy-MM-dd HH:mmZstr> <str>yyyy-MM-dd HH:mmstr> <str>yyyy-MM-ddstr> arr> updateProcessor> <updateProcessor class="solr.AddSchemaFieldsUpdateProcessorFactory" name="add-schema-fields"> <lst name="typeMapping"> <str name="valueClass">java.lang.Stringstr> <str name="fieldType">text_generalstr> <lst name="copyField"> <str name="dest">*_strstr> <int name="maxChars">256int> lst> <bool name="default">truebool> lst> <lst name="typeMapping"> <str name="valueClass">java.lang.Booleanstr> <str name="fieldType">booleansstr> lst> <lst name="typeMapping"> <str name="valueClass">java.util.Datestr> <str name="fieldType">pdatesstr> lst> <lst name="typeMapping"> <str name="valueClass">java.lang.Longstr> <str name="valueClass">java.lang.Integerstr> <str name="fieldType">plongsstr> lst> <lst name="typeMapping"> <str name="valueClass">java.lang.Numberstr> <str name="fieldType">pdoublesstr> lst> updateProcessor> <updateRequestProcessorChain name="add-unknown-fields-to-the-schema" default="${update.autoCreateFields:true}" processor="uuid,remove-blank,field-name-mutating,parse-boolean,parse-long,parse-double,parse-date,add-schema-fields"> <processor class="solr.LogUpdateProcessorFactory"/> <processor class="solr.DistributedUpdateProcessorFactory"/> <processor class="solr.RunUpdateProcessorFactory"/> updateRequestProcessorChain> <queryResponseWriter name="json" class="solr.JSONResponseWriter"> <str name="content-type">text/plain; charset=UTF-8str> queryResponseWriter> <queryResponseWriter name="velocity" class="solr.VelocityResponseWriter" startup="lazy"> <str name="template.base.dir">${velocity.template.base.dir:}str> <str name="solr.resource.loader.enabled">${velocity.solr.resource.loader.enabled:true}str> <str name="params.resource.loader.enabled">${velocity.params.resource.loader.enabled:false}str> queryResponseWriter> <queryResponseWriter name="xslt" class="solr.XSLTResponseWriter"> <int name="xsltCacheLifetimeSeconds">5int> queryResponseWriter> config>
3.3 修改managed-schema文件
增加需要露出的field,注意,设置了uniquekey的话,id是一定要有的。

xml version="1.0" encoding="UTF-8" ?> <schema name="default-config" version="1.6"> <field name="id" type="string" indexed="true" stored="true" required="true" multiValued="false" /> <field name="nick_name" type="string" indexed="true" stored="true" multiValued="false" /> <field name="is_delete" type="string" indexed="true" stored="true" multiValued="false" /> <field name="field_name" type="string" indexed="true" stored="true" multiValued="false" /> <field name="industry_name" type="string" indexed="true" stored="true" multiValued="false" /> <field name="sex" type="string" indexed="true" stored="true" multiValued="false" /> <field name="phone" type="string" indexed="true" stored="true" multiValued="false" /> <field name="email" type="string" indexed="true" stored="true" multiValued="false" /> <field name="_version_" type="plong" indexed="false" stored="false"/> <field name="_root_" type="string" indexed="true" stored="false" docValues="false" /> <field name="_text_" type="text_general" indexed="true" stored="false" multiValued="true"/> <dynamicField name="*_i" type="pint" indexed="true" stored="true"/> <dynamicField name="*_is" type="pints" indexed="true" stored="true"/> <dynamicField name="*_s" type="string" indexed="true" stored="true" /> <dynamicField name="*_ss" type="strings" indexed="true" stored="true"/> <dynamicField name="*_l" type="plong" indexed="true" stored="true"/> <dynamicField name="*_ls" type="plongs" indexed="true" stored="true"/> <dynamicField name="*_t" type="text_general" indexed="true" stored="true" multiValued="false"/> <dynamicField name="*_txt" type="text_general" indexed="true" stored="true"/> <dynamicField name="*_b" type="boolean" indexed="true" stored="true"/> <dynamicField name="*_bs" type="booleans" indexed="true" stored="true"/> <dynamicField name="*_f" type="pfloat" indexed="true" stored="true"/> <dynamicField name="*_fs" type="pfloats" indexed="true" stored="true"/> <dynamicField name="*_d" type="pdouble" indexed="true" stored="true"/> <dynamicField name="*_ds" type="pdoubles" indexed="true" stored="true"/> <dynamicField name="random_*" type="random"/> <dynamicField name="*_str" type="strings" stored="false" docValues="true" indexed="false" useDocValuesAsStored="false"/> <dynamicField name="*_dt" type="pdate" indexed="true" stored="true"/> <dynamicField name="*_dts" type="pdate" indexed="true" stored="true" multiValued="true"/> <dynamicField name="*_p" type="location" indexed="true" stored="true"/> <dynamicField name="*_srpt" type="location_rpt" indexed="true" stored="true"/> <dynamicField name="*_dpf" type="delimited_payloads_float" indexed="true" stored="true"/> <dynamicField name="*_dpi" type="delimited_payloads_int" indexed="true" stored="true"/> <dynamicField name="*_dps" type="delimited_payloads_string" indexed="true" stored="true"/> <dynamicField name="attr_*" type="text_general" indexed="true" stored="true" multiValued="true"/> <uniqueKey>iduniqueKey> <fieldType name="string" class="solr.StrField" sortMissingLast="true" docValues="true" /> <fieldType name="strings" class="solr.StrField" sortMissingLast="true" multiValued="true" docValues="true" /> <fieldType name="boolean" class="solr.BoolField" sortMissingLast="true"/> <fieldType name="booleans" class="solr.BoolField" sortMissingLast="true" multiValued="true"/> <fieldType name="pint" class="solr.IntPointField" docValues="true"/> <fieldType name="pfloat" class="solr.FloatPointField" docValues="true"/> <fieldType name="plong" class="solr.LongPointField" docValues="true"/> <fieldType name="pdouble" class="solr.DoublePointField" docValues="true"/> <fieldType name="pints" class="solr.IntPointField" docValues="true" multiValued="true"/> <fieldType name="pfloats" class="solr.FloatPointField" docValues="true" multiValued="true"/> <fieldType name="plongs" class="solr.LongPointField" docValues="true" multiValued="true"/> <fieldType name="pdoubles" class="solr.DoublePointField" docValues="true" multiValued="true"/> <fieldType name="random" class="solr.RandomSortField" indexed="true"/> <fieldType name="pdate" class="solr.DatePointField" docValues="true"/> <fieldType name="pdates" class="solr.DatePointField" docValues="true" multiValued="true"/> <fieldType name="binary" class="solr.BinaryField"/> <dynamicField name="*_ws" type="text_ws" indexed="true" stored="true"/> <fieldType name="text_ws" class="solr.TextField" positionIncrementGap="100"> <analyzer> <tokenizer class="solr.WhitespaceTokenizerFactory"/> analyzer> fieldType> <fieldType name="text_general" class="solr.TextField" positionIncrementGap="100" multiValued="true"> <analyzer type="index"> <tokenizer class="solr.StandardTokenizerFactory"/> <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" /> <filter class="solr.LowerCaseFilterFactory"/> analyzer> <analyzer type="query"> <tokenizer class="solr.StandardTokenizerFactory"/> <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" /> <filter class="solr.SynonymGraphFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/> <filter class="solr.LowerCaseFilterFactory"/> analyzer> fieldType> <dynamicField name="*_t_sort" type="text_gen_sort" indexed="true" stored="true" multiValued="false"/> <dynamicField name="*_txt_sort" type="text_gen_sort" indexed="true" stored="true"/> <fieldType name="text_gen_sort" class="solr.SortableTextField" positionIncrementGap="100" multiValued="true"> <analyzer type="index"> <tokenizer class="solr.StandardTokenizerFactory"/> <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" /> <filter class="solr.LowerCaseFilterFactory"/> analyzer> <analyzer type="query"> <tokenizer class="solr.StandardTokenizerFactory"/> <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" /> <filter class="solr.SynonymGraphFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/> <filter class="solr.LowerCaseFilterFactory"/> analyzer> fieldType> <dynamicField name="*_txt_en" type="text_en" indexed="true" stored="true"/> <fieldType name="text_en" class="solr.TextField" positionIncrementGap="100"> <analyzer type="index"> <tokenizer class="solr.StandardTokenizerFactory"/> <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_en.txt" /> <filter class="solr.LowerCaseFilterFactory"/> <filter class="solr.EnglishPossessiveFilterFactory"/> <filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/> <filter class="solr.PorterStemFilterFactory"/> analyzer> <analyzer type="query"> <tokenizer class="solr.StandardTokenizerFactory"/> <filter class="solr.SynonymGraphFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/> <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_en.txt" /> <filter class="solr.LowerCaseFilterFactory"/> <filter class="solr.EnglishPossessiveFilterFactory"/> <filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/> <filter class="solr.PorterStemFilterFactory"/> analyzer> fieldType> <dynamicField name="*_txt_en_split" type="text_en_splitting" indexed="true" stored="true"/> <fieldType name="text_en_splitting" class="solr.TextField" positionIncrementGap="100" autoGeneratePhraseQueries="true"> <analyzer type="index"> <tokenizer class="solr.WhitespaceTokenizerFactory"/> <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_en.txt" /> <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="0" splitOnCaseChange="1"/> <filter class="solr.LowerCaseFilterFactory"/> <filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/> <filter class="solr.PorterStemFilterFactory"/> <filter class="solr.FlattenGraphFilterFactory" /> analyzer> <analyzer type="query"> <tokenizer class="solr.WhitespaceTokenizerFactory"/> <filter class="solr.SynonymGraphFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/> <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_en.txt" /> <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0" catenateNumbers="0" catenateAll="0" splitOnCaseChange="1"/> <filter class="solr.LowerCaseFilterFactory"/> <filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/> <filter class="solr.PorterStemFilterFactory"/> analyzer> fieldType> <dynamicField name="*_txt_en_split_tight" type="text_en_splitting_tight" indexed="true" stored="true"/> <fieldType name="text_en_splitting_tight" class="solr.TextField" positionIncrementGap="100" autoGeneratePhraseQueries="true"> <analyzer type="index"> <tokenizer class="solr.WhitespaceTokenizerFactory"/> <filter class="solr.SynonymGraphFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="false"/> <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_en.txt"/> <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="0" generateNumberParts="0" catenateWords="1" catenateNumbers="1" catenateAll="0"/> <filter class="solr.LowerCaseFilterFactory"/> <filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/> <filter class="solr.EnglishMinimalStemFilterFactory"/> <filter class="solr.RemoveDuplicatesTokenFilterFactory"/> <filter class="solr.FlattenGraphFilterFactory" /> analyzer> <analyzer type="query"> <tokenizer class="solr.WhitespaceTokenizerFactory"/> <filter class="solr.SynonymGraphFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="false"/> <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_en.txt"/> <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="0" generateNumberParts="0" catenateWords="1" catenateNumbers="1" catenateAll="0"/> <filter class="solr.LowerCaseFilterFactory"/> <filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/> <filter class="solr.EnglishMinimalStemFilterFactory"/> <filter class="solr.RemoveDuplicatesTokenFilterFactory"/> analyzer> fieldType> <dynamicField name="*_txt_rev" type="text_general_rev" indexed="true" stored="true"/> <fieldType name="text_general_rev" class="solr.TextField" positionIncrementGap="100"> <analyzer type="index"> <tokenizer class="solr.StandardTokenizerFactory"/> <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" /> <filter class="solr.LowerCaseFilterFactory"/> <filter class="solr.ReversedWildcardFilterFactory" withOriginal="true" maxPosAsterisk="3" maxPosQuestion="2" maxFractionAsterisk="0.33"/> analyzer> <analyzer type="query"> <tokenizer class="solr.StandardTokenizerFactory"/> <filter class="solr.SynonymGraphFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/> <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" /> <filter class="solr.LowerCaseFilterFactory"/> analyzer> fieldType> <dynamicField name="*_phon_en" type="phonetic_en" indexed="true" stored="true"/> <fieldType name="phonetic_en" stored="false" indexed="true" class="solr.TextField" > <analyzer> <tokenizer class="solr.StandardTokenizerFactory"/> <filter class="solr.DoubleMetaphoneFilterFactory" inject="false"/> analyzer> fieldType> <dynamicField name="*_s_lower" type="lowercase" indexed="true" stored="true"/> <fieldType name="lowercase" class="solr.TextField" positionIncrementGap="100"> <analyzer> <tokenizer class="solr.KeywordTokenizerFactory"/> <filter class="solr.LowerCaseFilterFactory" /> analyzer> fieldType> <dynamicField name="*_descendent_path" type="descendent_path" indexed="true" stored="true"/> <fieldType name="descendent_path" class="solr.TextField"> <analyzer type="index"> <tokenizer class="solr.PathHierarchyTokenizerFactory" delimiter="/" /> analyzer> <analyzer type="query"> <tokenizer class="solr.KeywordTokenizerFactory" /> analyzer> fieldType> <dynamicField name="*_ancestor_path" type="ancestor_path" indexed="true" stored="true"/> <fieldType name="ancestor_path" class="solr.TextField"> <analyzer type="index"> <tokenizer class="solr.KeywordTokenizerFactory" /> analyzer> <analyzer type="query"> <tokenizer class="solr.PathHierarchyTokenizerFactory" delimiter="/" /> analyzer> fieldType> <dynamicField name="*_point" type="point" indexed="true" stored="true"/> <fieldType name="point" class="solr.PointType" dimension="2" subFieldSuffix="_d"/> <fieldType name="location" class="solr.LatLonPointSpatialField" docValues="true"/> <fieldType name="location_rpt" class="solr.SpatialRecursivePrefixTreeFieldType" geo="true" distErrPct="0.025" maxDistErr="0.001" distanceUnits="kilometers" /> <fieldType name="delimited_payloads_float" stored="false" indexed="true" class="solr.TextField"> <analyzer> <tokenizer class="solr.WhitespaceTokenizerFactory"/> <filter class="solr.DelimitedPayloadTokenFilterFactory" encoder="float"/> analyzer> fieldType> <fieldType name="delimited_payloads_int" stored="false" indexed="true" class="solr.TextField"> <analyzer> <tokenizer class="solr.WhitespaceTokenizerFactory"/> <filter class="solr.DelimitedPayloadTokenFilterFactory" encoder="integer"/> analyzer> fieldType> <fieldType name="delimited_payloads_string" stored="false" indexed="true" class="solr.TextField"> <analyzer> <tokenizer class="solr.WhitespaceTokenizerFactory"/> <filter class="solr.DelimitedPayloadTokenFilterFactory" encoder="identity"/> analyzer> fieldType> <dynamicField name="*_txt_ar" type="text_ar" indexed="true" stored="true"/> <fieldType name="text_ar" class="solr.TextField" positionIncrementGap="100"> <analyzer> <tokenizer class="solr.StandardTokenizerFactory"/> <filter class="solr.LowerCaseFilterFactory"/> <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_ar.txt" /> <filter class="solr.ArabicNormalizationFilterFactory"/> <filter class="solr.ArabicStemFilterFactory"/> analyzer> fieldType> <dynamicField name="*_txt_bg" type="text_bg" indexed="true" stored="true"/> <fieldType name="text_bg" class="solr.TextField" positionIncrementGap="100"> <analyzer> <tokenizer class="solr.StandardTokenizerFactory"/> <filter class="solr.LowerCaseFilterFactory"/> <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_bg.txt" /> <filter class="solr.BulgarianStemFilterFactory"/> analyzer> fieldType> <dynamicField name="*_txt_ca" type="text_ca" indexed="true" stored="true"/> <fieldType name="text_ca" class="solr.TextField" positionIncrementGap="100"> <analyzer> <tokenizer class="solr.StandardTokenizerFactory"/> <filter class="solr.ElisionFilterFactory" ignoreCase="true" articles="lang/contractions_ca.txt"/> <filter class="solr.LowerCaseFilterFactory"/> <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_ca.txt" /> <filter class="solr.SnowballPorterFilterFactory" language="Catalan"/> analyzer> fieldType> <dynamicField name="*_txt_cjk" type="text_cjk" indexed="true" stored="true"/> <fieldType name="text_cjk" class="solr.TextField" positionIncrementGap="100"> <analyzer> <tokenizer class="solr.StandardTokenizerFactory"/> <filter class="solr.CJKWidthFilterFactory"/> <filter class="solr.LowerCaseFilterFactory"/> <filter class="solr.CJKBigramFilterFactory"/> analyzer> fieldType> <dynamicField name="*_txt_cz" type="text_cz" indexed="true" stored="true"/> <fieldType name="text_cz" class="solr.TextField" positionIncrementGap="100"> <analyzer> <tokenizer class="solr.StandardTokenizerFactory"/> <filter class="solr.LowerCaseFilterFactory"/> <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_cz.txt" /> <filter class="solr.CzechStemFilterFactory"/> analyzer> fieldType> <dynamicField name="*_txt_da" type="text_da" indexed="true" stored="true"/> <fieldType name="text_da" class="solr.TextField" positionIncrementGap="100"> <analyzer> <tokenizer class="solr.StandardTokenizerFactory"/> <filter class="solr.LowerCaseFilterFactory"/> <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_da.txt" format="snowball" /> <filter class="solr.SnowballPorterFilterFactory" language="Danish"/> analyzer> fieldType> <dynamicField name="*_txt_de" type="text_de" indexed="true" stored="true"/> <fieldType name="text_de" class="solr.TextField" positionIncrementGap="100"> <analyzer> <tokenizer class="solr.StandardTokenizerFactory"/> <filter class="solr.LowerCaseFilterFactory"/> <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_de.txt" format="snowball" /> <filter class="solr.GermanNormalizationFilterFactory"/> <filter class="solr.GermanLightStemFilterFactory"/> analyzer> fieldType> <dynamicField name="*_txt_el" type="text_el" indexed="true" stored="true"/> <fieldType name="text_el" class="solr.TextField" positionIncrementGap="100"> <analyzer> <tokenizer class="solr.StandardTokenizerFactory"/> <filter class="solr.GreekLowerCaseFilterFactory"/> <filter class="solr.StopFilterFactory" ignoreCase="false" words="lang/stopwords_el.txt" /> <filter class="solr.GreekStemFilterFactory"/> analyzer> fieldType> <dynamicField name="*_txt_es" type="text_es" indexed="true" stored="true"/> <fieldType name="text_es" class="solr.TextField" positionIncrementGap="100"> <analyzer> <tokenizer class="solr.StandardTokenizerFactory"/> <filter class="solr.LowerCaseFilterFactory"/> <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_es.txt" format="snowball" /> <filter class="solr.SpanishLightStemFilterFactory"/> analyzer> fieldType> <dynamicField name="*_txt_eu" type="text_eu" indexed="true" stored="true"/> <fieldType name="text_eu" class="solr.TextField" positionIncrementGap="100"> <analyzer> <tokenizer class="solr.StandardTokenizerFactory"/> <filter class="solr.LowerCaseFilterFactory"/> <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_eu.txt" /> <filter class="solr.SnowballPorterFilterFactory" language="Basque"/> analyzer> fieldType> <dynamicField name="*_txt_fa" type="text_fa" indexed="true" stored="true"/> <fieldType name="text_fa" class="solr.TextField" positionIncrementGap="100"> <analyzer> <charFilter class="solr.PersianCharFilterFactory"/> <tokenizer class="solr.StandardTokenizerFactory"/> <filter class="solr.LowerCaseFilterFactory"/> <filter class="solr.ArabicNormalizationFilterFactory"/> <filter class="solr.PersianNormalizationFilterFactory"/> <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_fa.txt" /> analyzer> fieldType> <dynamicField name="*_txt_fi" type="text_fi" indexed="true" stored="true"/> <fieldType name="text_fi" class="solr.TextField" positionIncrementGap="100"> <analyzer> <tokenizer class="solr.StandardTokenizerFactory"/> <filter class="solr.LowerCaseFilterFactory"/> <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_fi.txt" format="snowball" /> <filter class="solr.SnowballPorterFilterFactory" language="Finnish"/> analyzer> fieldType> <dynamicField name="*_txt_fr" type="text_fr" indexed="true" stored="true"/> <fieldType name="text_fr" class="solr.TextField" positionIncrementGap="100"> <analyzer> <tokenizer class="solr.StandardTokenizerFactory"/> <filter class="solr.ElisionFilterFactory" ignoreCase="true" articles="lang/contractions_fr.txt"/> <filter class="solr.LowerCaseFilterFactory"/> <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_fr.txt" format="snowball" /> <filter class="solr.FrenchLightStemFilterFactory"/> analyzer> fieldType> <dynamicField name="*_txt_ga" type="text_ga" indexed="true" stored="true"/> <fieldType name="text_ga" class="solr.TextField" positionIncrementGap="100"> <analyzer> <tokenizer class="solr.StandardTokenizerFactory"/> <filter class="solr.ElisionFilterFactory" ignoreCase="true" articles="lang/contractions_ga.txt"/> <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/hyphenations_ga.txt"/> <filter class="solr.IrishLowerCaseFilterFactory"/> <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_ga.txt"/> <filter class="solr.SnowballPorterFilterFactory" language="Irish"/> analyzer> fieldType> <dynamicField name="*_txt_gl" type="text_gl" indexed="true" stored="true"/> <fieldType name="text_gl" class="solr.TextField" positionIncrementGap="100"> <analyzer> <tokenizer class="solr.StandardTokenizerFactory"/> <filter class="solr.LowerCaseFilterFactory"/> <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_gl.txt" /> <filter class="solr.GalicianStemFilterFactory"/> analyzer> fieldType> <dynamicField name="*_txt_hi" type="text_hi" indexed="true" stored="true"/> <fieldType name="text_hi" class="solr.TextField" positionIncrementGap="100"> <analyzer> <tokenizer class="solr.StandardTokenizerFactory"/> <filter class="solr.LowerCaseFilterFactory"/> <filter class="solr.IndicNormalizationFilterFactory"/> <filter class="solr.HindiNormalizationFilterFactory"/> <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_hi.txt" /> <filter class="solr.HindiStemFilterFactory"/> analyzer> fieldType> <dynamicField name="*_txt_hu" type="text_hu" indexed="true" stored="true"/> <fieldType name="text_hu" class="solr.TextField" positionIncrementGap="100"> <analyzer> <tokenizer class="solr.StandardTokenizerFactory"/> <filter class="solr.LowerCaseFilterFactory"/> <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_hu.txt" format="snowball" /> <filter class="solr.SnowballPorterFilterFactory" language="Hungarian"/> analyzer> fieldType> <dynamicField name="*_txt_hy" type="text_hy" indexed="true" stored="true"/> <fieldType name="text_hy" class="solr.TextField" positionIncrementGap="100"> <analyzer> <tokenizer class="solr.StandardTokenizerFactory"/> <filter class="solr.LowerCaseFilterFactory"/> <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_hy.txt" /> <filter class="solr.SnowballPorterFilterFactory" language="Armenian"/> analyzer> fieldType> <dynamicField name="*_txt_id" type="text_id" indexed="true" stored="true"/> <fieldType name="text_id" class="solr.TextField" positionIncrementGap="100"> <analyzer> <tokenizer class="solr.StandardTokenizerFactory"/> <filter class="solr.LowerCaseFilterFactory"/> <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_id.txt" /> <filter class="solr.IndonesianStemFilterFactory" stemDerivational="true"/> analyzer> fieldType> <dynamicField name="*_txt_it" type="text_it" indexed="true" stored="true"/> <fieldType name="text_it" class="solr.TextField" positionIncrementGap="100"> <analyzer> <tokenizer class="solr.StandardTokenizerFactory"/> <filter class="solr.ElisionFilterFactory" ignoreCase="true" articles="lang/contractions_it.txt"/> <filter class="solr.LowerCaseFilterFactory"/> <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_it.txt" format="snowball" /> <filter class="solr.ItalianLightStemFilterFactory"/> analyzer> fieldType> <dynamicField name="*_txt_ja" type="text_ja" indexed="true" stored="true"/> <fieldType name="text_ja" class="solr.TextField" positionIncrementGap="100" autoGeneratePhraseQueries="false"> <analyzer> <tokenizer class="solr.JapaneseTokenizerFactory" mode="search"/> <filter class="solr.JapaneseBaseFormFilterFactory"/> <filter class="solr.JapanesePartOfSpeechStopFilterFactory" tags="lang/stoptags_ja.txt" /> <filter class="solr.CJKWidthFilterFactory"/> <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_ja.txt" /> <filter class="solr.JapaneseKatakanaStemFilterFactory" minimumLength="4"/> <filter class="solr.LowerCaseFilterFactory"/> analyzer> fieldType> <dynamicField name="*_txt_ko" type="text_ko" indexed="true" stored="true"/> <fieldType name="text_ko" class="solr.TextField" positionIncrementGap="100"> <analyzer> <tokenizer class="solr.KoreanTokenizerFactory" decompoundMode="discard" outputUnknownUnigrams="false"/> <filter class="solr.KoreanPartOfSpeechStopFilterFactory" /> <filter class="solr.KoreanReadingFormFilterFactory" /> <filter class="solr.LowerCaseFilterFactory" /> analyzer> fieldType> <dynamicField name="*_txt_lv" type="text_lv" indexed="true" stored="true"/> <fieldType name="text_lv" class="solr.TextField" positionIncrementGap="100"> <analyzer> <tokenizer class="solr.StandardTokenizerFactory"/> <filter class="solr.LowerCaseFilterFactory"/> <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_lv.txt" /> <filter class="solr.LatvianStemFilterFactory"/> analyzer> fieldType> <dynamicField name="*_txt_nl" type="text_nl" indexed="true" stored="true"/> <fieldType name="text_nl" class="solr.TextField" positionIncrementGap="100"> <analyzer> <tokenizer class="solr.StandardTokenizerFactory"/> <filter class="solr.LowerCaseFilterFactory"/> <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_nl.txt" format="snowball" /> <filter class="solr.StemmerOverrideFilterFactory" dictionary="lang/stemdict_nl.txt" ignoreCase="false"/> <filter class="solr.SnowballPorterFilterFactory" language="Dutch"/> analyzer> fieldType> <dynamicField name="*_txt_no" type="text_no" indexed="true" stored="true"/> <fieldType name="text_no" class="solr.TextField" positionIncrementGap="100"> <analyzer> <tokenizer class="solr.StandardTokenizerFactory"/> <filter class="solr.LowerCaseFilterFactory"/> <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_no.txt" format="snowball" /> <filter class="solr.SnowballPorterFilterFactory" language="Norwegian"/> analyzer> fieldType> <dynamicField name="*_txt_pt" type="text_pt" indexed="true" stored="true"/> <fieldType name="text_pt" class="solr.TextField" positionIncrementGap="100"> <analyzer> <tokenizer class="solr.StandardTokenizerFactory"/> <filter class="solr.LowerCaseFilterFactory"/> <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_pt.txt" format="snowball" /> <filter class="solr.PortugueseLightStemFilterFactory"/> analyzer> fieldType> <dynamicField name="*_txt_ro" type="text_ro" indexed="true" stored="true"/> <fieldType name="text_ro" class="solr.TextField" positionIncrementGap="100"> <analyzer> <tokenizer class="solr.StandardTokenizerFactory"/> <filter class="solr.LowerCaseFilterFactory"/> <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_ro.txt" /> <filter class="solr.SnowballPorterFilterFactory" language="Romanian"/> analyzer> fieldType> <dynamicField name="*_txt_ru" type="text_ru" indexed="true" stored="true"/> <fieldType name="text_ru" class="solr.TextField" positionIncrementGap="100"> <analyzer> <tokenizer class="solr.StandardTokenizerFactory"/> <filter class="solr.LowerCaseFilterFactory"/> <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_ru.txt" format="snowball" /> <filter class="solr.SnowballPorterFilterFactory" language="Russian"/> analyzer> fieldType> <dynamicField name="*_txt_sv" type="text_sv" indexed="true" stored="true"/> <fieldType name="text_sv" class="solr.TextField" positionIncrementGap="100"> <analyzer> <tokenizer class="solr.StandardTokenizerFactory"/> <filter class="solr.LowerCaseFilterFactory"/> <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_sv.txt" format="snowball" /> <filter class="solr.SnowballPorterFilterFactory" language="Swedish"/> analyzer> fieldType> <dynamicField name="*_txt_th" type="text_th" indexed="true" stored="true"/> <fieldType name="text_th" class="solr.TextField" positionIncrementGap="100"> <analyzer> <tokenizer class="solr.ThaiTokenizerFactory"/> <filter class="solr.LowerCaseFilterFactory"/> <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_th.txt" /> analyzer> fieldType> <dynamicField name="*_txt_tr" type="text_tr" indexed="true" stored="true"/> <fieldType name="text_tr" class="solr.TextField" positionIncrementGap="100"> <analyzer> <tokenizer class="solr.StandardTokenizerFactory"/> <filter class="solr.TurkishLowerCaseFilterFactory"/> <filter class="solr.StopFilterFactory" ignoreCase="false" words="lang/stopwords_tr.txt" /> <filter class="solr.SnowballPorterFilterFactory" language="Turkish"/> analyzer> fieldType> schema>
四、导入数据
4.1 利用solr Admin界面来操作
4.2 查询导入的数据
点击查询按钮后,可以看到小白这条数据已经导入了。
五、对数据进行操作
5.1 增加或修改一条数据
增加的数据是保存到solr的内存里,而不是保存到数据库里。增加、修改、删除,都是用/update命令。修改的时候,把查询出来的json复制到这里,然后进行修改就行。实际上修改操作就是先删除,然后新增加,所以会覆盖数据,要谨慎操作。注意,_version字段是索引的版本号,不能手动修改,不要复制到这里。
5.2 删除一条数据
删除数据,要使用XML格式,指定删掉的索引id就行
5.3 查询
可以看到,id为2的数据被删掉了,增加了一条小王的数据。
以上,就是导入数据到solr的一种方法,祝大家国庆节快乐!