• solr6.3与MySQL结合使用


    一、什么是solr?

    solr 是一个全文搜索工具,它是由Lucene发展而来。那么,solr 和 Lucene 之间是什么样的关系呢?简单地说,如果把solr比喻成一辆汽车,那么Lucene就是一台汽车引擎。绝大多数情况下我们完全可以使用solr 来解决开发中遇到的问题。

    二、环境准备

    确保你的机器上安装了 java8。java8具体的安装配置方法网上有很多,本文主要与 solr 相关,这里就不赘述了。

    从solr的官网下载压缩包。你可以在 http://mirrors.cnnic.cn/apache/lucene/solr/

    看到官网上存在的solr版本。因为我用6.3.0做例子,所以点击进入6.3.0的版本。你也可以直接访问http://mirrors.cnnic.cn/apache/lucene/solr/ 来进行下载。下载下来的文件名是 solr-6.3.0.zip。

    三、初次体验solr和数据库的结合使用。

    solr 提供了例子来给使用者学习。本文是在win10上的演示。解压solr-6.3.0.zip 文件到 E:log est1solr-6.3.0。用管理员身份进入命令行,用cd命令进入 E:log est1solr-6.3.0in 文件夹下,输入命令:

    solr -e dih
    • 1

    就可以启动 solr 服务器了。打开浏览器,输入网址:localhost:8983/solr/ 。你就可以进入solr的WEB控制台。 
    如果想要停止solr服务器,输入命令:

    solr stop -all
    • 1

    四、WEB 控制台界面介绍

    这里写图片描述

    左边方框中的菜单项选择重要的说明一下: 
    Dashboard: 首页,显示各种系统信息。 
    Core Admin: 核心管理。后面的内容有解释。 
    Java Properties:java参数。因为solr是用java编写的,所以存在一些java参数。 
    下拉列表Core Selector : 选择当前的核心。后面的内容有讲解。

    点击 Core Admin 后的界面:

    这里写图片描述

    红色方框中的是当前solr服务器正在管理的核心。这些核心与 E:log est1solr-6.3.0exampleexample-DIHsolr 中的文件夹一一对应。绿色方框中的是用户选中的核心的详细信息。比如上面图片中,用户选择了db核心,绿色方框中就显示了db核心的startTime、instanceDir和dataDir参数。

    下拉列表Core Selector中选择db后的界面:

    这里写图片描述

    其中 Overview是db核心的概览,Dataimport是导入数据,Query是查询。solr默认的db例子里面使用的是hsqldb。为了使用这个例子,我们要先引入数据。点击 Dataimport,页面如下:

    这里写图片描述

    Configuration显示db核心的数据配置。当你修改了核心配置了以后,点击Reload重新加载数据配置。每次启动solr服务器或者修改了数据配置以后,都要在左侧执行 full-import命令刷新。现在我们点击一下 Execute 按钮,就可以刷新。solr会启动一个线程进行刷新,在刷新完成前,你依然可以访问数据,不过只能访问到旧的数据。点击Refresh Status可以刷新线程的状态。点击 Raw Status-Output 就可以查看到最新的刷新线程运行的状态。当出现 Indexing completed. Added/Updated: 16 documents. Deleted 0 documents. (Duration: 02s) 的提示,说明刷新已经完成。

    除了点击按钮以外,你也可以直接用Get方法访问 
    http://localhost:8983/solr/db/dataimport?command=full-import&wt=json 

    来刷新数据和配置。 
    用Get方法访问 http://localhost:8983/solr/db/dataimport?command=status&wt=json 
    来获得刷新线程的状态。

    下拉列表Core Selector下方,点击Query,就来到了查询页面。等上面提到的刷新完成后,就可以查看到数据了。效果如图所示:

    这里写图片描述

    图中右上角的链接是一个Web api 的地址,用户可以用GET方法访问这个地址来获取数据。数据格式如右下部分json格式所示。中间栏,q文本域里面是查询参数。默认的 *:* 表示查询所有记录。 start, rows 分别表示开始的行数和显示出来的行数。start从0开始,默认start等于0,rows等于10。

    name:*11* 表示查找name属性包含字符串11的记录。

    name:*11* OR name:*DATA* 表示查找name属性包含11或者name属性包含DATA的记录。注意 OR 的左右都有英语空格。

    NOT name:*11* 表示查找name 属性不包含11的记录。注意NOT和name之间有英语空格。

    name:*le* AND price:[19 TO 10000] 表示查找name属性包含le字符串并且价格在19到10000之间的记录。注意TO和AND的左右两边有英语空格。

    price:{350 TO 399] 查找价格在350到399之间的记录。{ 或 } 表示不包含边界值, [ 或 ] 表示包含边界值。

    price:{350 TO *] 查找大于350的记录,不包含350。

    price:{* TO 350] 查找小于等于350的记录。

    (name:USB AND name:ta)OR(name:USB OR name:ta) 英文圆括号用来提高逻辑运算符的优先级。

    五、连接MySQL

    下面我们用连接一张表来演示如何连接MySQL。 
    使用solr stop -all确保关闭solr。我们在已有例子的基础上进行修改。复制 E:log est1solr-6.3.0exampleexample-DIHsolr 下的db文件夹,粘贴重命名为db2。 
    db2 下面的 lib 文件夹下,删除hsqldb-1.8.0.10.jar 文件,把文件 mysql-connector-java-5.1.40.jar 放到lib文件夹下面。在db2conf文件夹下面,用编辑器打开solrconfig.xml文件,找到下面几行:

    <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" />
    • 1
    • 2
    • 3
    • 4
    • 5

    在这几行代码下面紧跟着另起一行,加一个lib标签,内容如下:

    <lib dir="E:/blog/test1/solr-6.3.0/example/example-DIH/solr/db2/lib/" regex="mysql-connector-java-5.1.40.jar" />
    • 1

    dir属性是指mysql驱动jar文件所在文件夹的硬盘路径。注意路径分隔符建议使用 / 。这个例子,所有的字符编码都使用了UTF-8。数据库也使用了UTF-8。 
    mysql中的数据结构如下:

    CREATE DATABASE `db1` /*!40100 DEFAULT CHARACTER SET utf8 */;
    
    use db1;
    
    CREATE TABLE `t_book` (
      `c_id` varchar(100) NOT NULL,
      `c_name` varchar(45) DEFAULT NULL,
      `c_isbn` varchar(45) DEFAULT NULL,
      `c_price` decimal(5,2) DEFAULT NULL,
      PRIMARY KEY (`c_id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    编辑 db-data-config.xml 文件,内容如下:

    <dataConfig>
        <dataSource type="JdbcDataSource" 
                  driver="com.mysql.jdbc.Driver"
                  url="jdbc:mysql://127.0.0.1:3306/db1" 
                  user="test_user" 
                  encoding="UTF-8"
                  password="123456"/>
        <document>
            <entity name="jynbook" processor="SqlEntityProcessor" pk="id"
                query="select c_id,c_name,c_isbn from t_book">
                <field name="id" column="c_id" />  
                <field name="name" column="c_name" />  
                <field name="isbn" column="c_isbn" />
            </entity>
        </document>
    </dataConfig>
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    编辑 managed-schema 文件,换成下面的内容:

    <?xml version="1.0" encoding="UTF-8"?>
    <!-- Solr managed schema - automatically generated - DO NOT EDIT -->
    <schema name="example-DIH-db2" version="1.6">
      <uniqueKey>id</uniqueKey>
      <fieldType name="alphaOnlySort" class="solr.TextField" omitNorms="true" sortMissingLast="true">
        <analyzer>
          <tokenizer class="solr.KeywordTokenizerFactory"/>
          <filter class="solr.LowerCaseFilterFactory"/>
          <filter class="solr.TrimFilterFactory"/>
          <filter class="solr.PatternReplaceFilterFactory" pattern="([^a-z])" replace="all" replacement=""/>
        </analyzer>
      </fieldType>
      <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>
      <fieldType name="binary" class="solr.BinaryField"/>
      <fieldType name="boolean" class="solr.BoolField" sortMissingLast="true"/>
      <fieldType name="currency" class="solr.CurrencyField" currencyConfig="currency.xml" defaultCurrency="USD" precisionStep="8"/>
      <fieldType name="date" class="solr.TrieDateField" positionIncrementGap="0" precisionStep="0"/>
      <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>
      <fieldType name="double" class="solr.TrieDoubleField" positionIncrementGap="0" precisionStep="0"/>
      <fieldType name="float" class="solr.TrieFloatField" positionIncrementGap="0" precisionStep="0"/>
      <fieldType name="ignored" class="solr.StrField" indexed="false" stored="false" multiValued="true"/>
      <fieldType name="int" class="solr.TrieIntField" positionIncrementGap="0" precisionStep="0"/>
      <fieldType name="location" class="solr.LatLonType" subFieldSuffix="_coordinate"/>
      <fieldType name="location_rpt" class="solr.SpatialRecursivePrefixTreeFieldType" geo="true" maxDistErr="0.001" distErrPct="0.025" distanceUnits="kilometers"/>
      <fieldType name="long" class="solr.TrieLongField" positionIncrementGap="0" precisionStep="0"/>
      <fieldType name="lowercase" class="solr.TextField" positionIncrementGap="100">
        <analyzer>
          <tokenizer class="solr.KeywordTokenizerFactory"/>
          <filter class="solr.LowerCaseFilterFactory"/>
        </analyzer>
      </fieldType>
      <fieldType name="payloads" class="solr.TextField" indexed="true" stored="false">
        <analyzer>
          <tokenizer class="solr.WhitespaceTokenizerFactory"/>
          <filter class="solr.DelimitedPayloadTokenFilterFactory" encoder="float"/>
        </analyzer>
      </fieldType>
      <fieldType name="phonetic" class="solr.TextField" indexed="true" stored="false">
        <analyzer>
          <tokenizer class="solr.StandardTokenizerFactory"/>
          <filter class="solr.DoubleMetaphoneFilterFactory" inject="false"/>
        </analyzer>
      </fieldType>
      <fieldType name="point" class="solr.PointType" subFieldSuffix="_d" dimension="2"/>
      <fieldType name="random" class="solr.RandomSortField" indexed="true"/>
      <fieldType name="string" class="solr.StrField" sortMissingLast="true"/>
      <fieldType name="tdate" class="solr.TrieDateField" positionIncrementGap="0" precisionStep="6"/>
      <fieldType name="tdouble" class="solr.TrieDoubleField" positionIncrementGap="0" precisionStep="8"/>
      <fieldType name="text_ar" class="solr.TextField" positionIncrementGap="100">
        <analyzer>
          <tokenizer class="solr.StandardTokenizerFactory"/>
          <filter class="solr.LowerCaseFilterFactory"/>
          <filter class="solr.StopFilterFactory" words="lang/stopwords_ar.txt" ignoreCase="true"/>
          <filter class="solr.ArabicNormalizationFilterFactory"/>
          <filter class="solr.ArabicStemFilterFactory"/>
        </analyzer>
      </fieldType>
      <fieldType name="text_bg" class="solr.TextField" positionIncrementGap="100">
        <analyzer>
          <tokenizer class="solr.StandardTokenizerFactory"/>
          <filter class="solr.LowerCaseFilterFactory"/>
          <filter class="solr.StopFilterFactory" words="lang/stopwords_bg.txt" ignoreCase="true"/>
          <filter class="solr.BulgarianStemFilterFactory"/>
        </analyzer>
      </fieldType>
      <fieldType name="text_ca" class="solr.TextField" positionIncrementGap="100">
        <analyzer>
          <tokenizer class="solr.StandardTokenizerFactory"/>
          <filter class="solr.ElisionFilterFactory" articles="lang/contractions_ca.txt" ignoreCase="true"/>
          <filter class="solr.LowerCaseFilterFactory"/>
          <filter class="solr.StopFilterFactory" words="lang/stopwords_ca.txt" ignoreCase="true"/>
          <filter class="solr.SnowballPorterFilterFactory" language="Catalan"/>
        </analyzer>
      </fieldType>
      <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>
      <fieldType name="text_ckb" class="solr.TextField" positionIncrementGap="100">
        <analyzer>
          <tokenizer class="solr.StandardTokenizerFactory"/>
          <filter class="solr.SoraniNormalizationFilterFactory"/>
          <filter class="solr.LowerCaseFilterFactory"/>
          <filter class="solr.StopFilterFactory" words="lang/stopwords_ckb.txt" ignoreCase="true"/>
          <filter class="solr.SoraniStemFilterFactory"/>
        </analyzer>
      </fieldType>
      <fieldType name="text_cz" class="solr.TextField" positionIncrementGap="100">
        <analyzer>
          <tokenizer class="solr.StandardTokenizerFactory"/>
          <filter class="solr.LowerCaseFilterFactory"/>
          <filter class="solr.StopFilterFactory" words="lang/stopwords_cz.txt" ignoreCase="true"/>
          <filter class="solr.CzechStemFilterFactory"/>
        </analyzer>
      </fieldType>
      <fieldType name="text_da" class="solr.TextField" positionIncrementGap="100">
        <analyzer>
          <tokenizer class="solr.StandardTokenizerFactory"/>
          <filter class="solr.LowerCaseFilterFactory"/>
          <filter class="solr.StopFilterFactory" format="snowball" words="lang/stopwords_da.txt" ignoreCase="true"/>
          <filter class="solr.SnowballPorterFilterFactory" language="Danish"/>
        </analyzer>
      </fieldType>
      <fieldType name="text_de" class="solr.TextField" positionIncrementGap="100">
        <analyzer>
          <tokenizer class="solr.StandardTokenizerFactory"/>
          <filter class="solr.LowerCaseFilterFactory"/>
          <filter class="solr.StopFilterFactory" format="snowball" words="lang/stopwords_de.txt" ignoreCase="true"/>
          <filter class="solr.GermanNormalizationFilterFactory"/>
          <filter class="solr.GermanLightStemFilterFactory"/>
        </analyzer>
      </fieldType>
      <fieldType name="text_el" class="solr.TextField" positionIncrementGap="100">
        <analyzer>
          <tokenizer class="solr.StandardTokenizerFactory"/>
          <filter class="solr.GreekLowerCaseFilterFactory"/>
          <filter class="solr.StopFilterFactory" words="lang/stopwords_el.txt" ignoreCase="false"/>
          <filter class="solr.GreekStemFilterFactory"/>
        </analyzer>
      </fieldType>
      <fieldType name="text_en" class="solr.TextField" positionIncrementGap="100">
        <analyzer type="index">
          <tokenizer class="solr.StandardTokenizerFactory"/>
          <filter class="solr.StopFilterFactory" words="lang/stopwords_en.txt" ignoreCase="true"/>
          <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.SynonymFilterFactory" expand="true" ignoreCase="true" synonyms="synonyms.txt"/>
          <filter class="solr.StopFilterFactory" words="lang/stopwords_en.txt" ignoreCase="true"/>
          <filter class="solr.LowerCaseFilterFactory"/>
          <filter class="solr.EnglishPossessiveFilterFactory"/>
          <filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>
          <filter class="solr.PorterStemFilterFactory"/>
        </analyzer>
      </fieldType>
      <fieldType name="text_en_splitting" class="solr.TextField" autoGeneratePhraseQueries="true" positionIncrementGap="100">
        <analyzer type="index">
          <tokenizer class="solr.WhitespaceTokenizerFactory"/>
          <filter class="solr.StopFilterFactory" words="lang/stopwords_en.txt" ignoreCase="true"/>
          <filter class="solr.WordDelimiterFilterFactory" catenateNumbers="1" generateNumberParts="1" splitOnCaseChange="1" generateWordParts="1" catenateAll="0" catenateWords="1"/>
          <filter class="solr.LowerCaseFilterFactory"/>
          <filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>
          <filter class="solr.PorterStemFilterFactory"/>
        </analyzer>
        <analyzer type="query">
          <tokenizer class="solr.WhitespaceTokenizerFactory"/>
          <filter class="solr.SynonymFilterFactory" expand="true" ignoreCase="true" synonyms="synonyms.txt"/>
          <filter class="solr.StopFilterFactory" words="lang/stopwords_en.txt" ignoreCase="true"/>
          <filter class="solr.WordDelimiterFilterFactory" catenateNumbers="0" generateNumberParts="1" splitOnCaseChange="1" generateWordParts="1" catenateAll="0" catenateWords="0"/>
          <filter class="solr.LowerCaseFilterFactory"/>
          <filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>
          <filter class="solr.PorterStemFilterFactory"/>
        </analyzer>
      </fieldType>
      <fieldType name="text_en_splitting_tight" class="solr.TextField" autoGeneratePhraseQueries="true" positionIncrementGap="100">
        <analyzer>
          <tokenizer class="solr.WhitespaceTokenizerFactory"/>
          <filter class="solr.SynonymFilterFactory" expand="false" ignoreCase="true" synonyms="synonyms.txt"/>
          <filter class="solr.StopFilterFactory" words="lang/stopwords_en.txt" ignoreCase="true"/>
          <filter class="solr.WordDelimiterFilterFactory" catenateNumbers="1" generateNumberParts="0" generateWordParts="0" catenateAll="0" catenateWords="1"/>
          <filter class="solr.LowerCaseFilterFactory"/>
          <filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>
          <filter class="solr.EnglishMinimalStemFilterFactory"/>
          <filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
        </analyzer>
      </fieldType>
      <fieldType name="text_es" class="solr.TextField" positionIncrementGap="100">
        <analyzer>
          <tokenizer class="solr.StandardTokenizerFactory"/>
          <filter class="solr.LowerCaseFilterFactory"/>
          <filter class="solr.StopFilterFactory" format="snowball" words="lang/stopwords_es.txt" ignoreCase="true"/>
          <filter class="solr.SpanishLightStemFilterFactory"/>
        </analyzer>
      </fieldType>
      <fieldType name="text_eu" class="solr.TextField" positionIncrementGap="100">
        <analyzer>
          <tokenizer class="solr.StandardTokenizerFactory"/>
          <filter class="solr.LowerCaseFilterFactory"/>
          <filter class="solr.StopFilterFactory" words="lang/stopwords_eu.txt" ignoreCase="true"/>
          <filter class="solr.SnowballPorterFilterFactory" language="Basque"/>
        </analyzer>
      </fieldType>
      <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" words="lang/stopwords_fa.txt" ignoreCase="true"/>
        </analyzer>
      </fieldType>
      <fieldType name="text_fi" class="solr.TextField" positionIncrementGap="100">
        <analyzer>
          <tokenizer class="solr.StandardTokenizerFactory"/>
          <filter class="solr.LowerCaseFilterFactory"/>
          <filter class="solr.StopFilterFactory" format="snowball" words="lang/stopwords_fi.txt" ignoreCase="true"/>
          <filter class="solr.SnowballPorterFilterFactory" language="Finnish"/>
        </analyzer>
      </fieldType>
      <fieldType name="text_fr" class="solr.TextField" positionIncrementGap="100">
        <analyzer>
          <tokenizer class="solr.StandardTokenizerFactory"/>
          <filter class="solr.ElisionFilterFactory" articles="lang/contractions_fr.txt" ignoreCase="true"/>
          <filter class="solr.LowerCaseFilterFactory"/>
          <filter class="solr.StopFilterFactory" format="snowball" words="lang/stopwords_fr.txt" ignoreCase="true"/>
          <filter class="solr.FrenchLightStemFilterFactory"/>
        </analyzer>
      </fieldType>
      <fieldType name="text_ga" class="solr.TextField" positionIncrementGap="100">
        <analyzer>
          <tokenizer class="solr.StandardTokenizerFactory"/>
          <filter class="solr.ElisionFilterFactory" articles="lang/contractions_ga.txt" ignoreCase="true"/>
          <filter class="solr.StopFilterFactory" words="lang/hyphenations_ga.txt" ignoreCase="true"/>
          <filter class="solr.IrishLowerCaseFilterFactory"/>
          <filter class="solr.StopFilterFactory" words="lang/stopwords_ga.txt" ignoreCase="true"/>
          <filter class="solr.SnowballPorterFilterFactory" language="Irish"/>
        </analyzer>
      </fieldType>
      <fieldType name="text_general" class="solr.TextField" positionIncrementGap="100">
        <analyzer type="index">
          <tokenizer class="solr.StandardTokenizerFactory"/>
          <filter class="solr.StopFilterFactory" words="stopwords.txt" ignoreCase="true"/>
          <filter class="solr.LowerCaseFilterFactory"/>
        </analyzer>
        <analyzer type="query">
          <tokenizer class="solr.StandardTokenizerFactory"/>
          <filter class="solr.StopFilterFactory" words="stopwords.txt" ignoreCase="true"/>
          <filter class="solr.SynonymFilterFactory" expand="true" ignoreCase="true" synonyms="synonyms.txt"/>
          <filter class="solr.LowerCaseFilterFactory"/>
        </analyzer>
      </fieldType>
      <fieldType name="text_general_rev" class="solr.TextField" positionIncrementGap="100">
        <analyzer type="index">
          <tokenizer class="solr.StandardTokenizerFactory"/>
          <filter class="solr.StopFilterFactory" words="stopwords.txt" ignoreCase="true"/>
          <filter class="solr.LowerCaseFilterFactory"/>
          <filter class="solr.ReversedWildcardFilterFactory" maxPosQuestion="2" maxFractionAsterisk="0.33" maxPosAsterisk="3" withOriginal="true"/>
        </analyzer>
        <analyzer type="query">
          <tokenizer class="solr.StandardTokenizerFactory"/>
          <filter class="solr.SynonymFilterFactory" expand="true" ignoreCase="true" synonyms="synonyms.txt"/>
          <filter class="solr.StopFilterFactory" words="stopwords.txt" ignoreCase="true"/>
          <filter class="solr.LowerCaseFilterFactory"/>
        </analyzer>
      </fieldType>
      <fieldType name="text_gl" class="solr.TextField" positionIncrementGap="100">
        <analyzer>
          <tokenizer class="solr.StandardTokenizerFactory"/>
          <filter class="solr.LowerCaseFilterFactory"/>
          <filter class="solr.StopFilterFactory" words="lang/stopwords_gl.txt" ignoreCase="true"/>
          <filter class="solr.GalicianStemFilterFactory"/>
        </analyzer>
      </fieldType>
      <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" words="lang/stopwords_hi.txt" ignoreCase="true"/>
          <filter class="solr.HindiStemFilterFactory"/>
        </analyzer>
      </fieldType>
      <fieldType name="text_hu" class="solr.TextField" positionIncrementGap="100">
        <analyzer>
          <tokenizer class="solr.StandardTokenizerFactory"/>
          <filter class="solr.LowerCaseFilterFactory"/>
          <filter class="solr.StopFilterFactory" format="snowball" words="lang/stopwords_hu.txt" ignoreCase="true"/>
          <filter class="solr.SnowballPorterFilterFactory" language="Hungarian"/>
        </analyzer>
      </fieldType>
      <fieldType name="text_hy" class="solr.TextField" positionIncrementGap="100">
        <analyzer>
          <tokenizer class="solr.StandardTokenizerFactory"/>
          <filter class="solr.LowerCaseFilterFactory"/>
          <filter class="solr.StopFilterFactory" words="lang/stopwords_hy.txt" ignoreCase="true"/>
          <filter class="solr.SnowballPorterFilterFactory" language="Armenian"/>
        </analyzer>
      </fieldType>
      <fieldType name="text_id" class="solr.TextField" positionIncrementGap="100">
        <analyzer>
          <tokenizer class="solr.StandardTokenizerFactory"/>
          <filter class="solr.LowerCaseFilterFactory"/>
          <filter class="solr.StopFilterFactory" words="lang/stopwords_id.txt" ignoreCase="true"/>
          <filter class="solr.IndonesianStemFilterFactory" stemDerivational="true"/>
        </analyzer>
      </fieldType>
      <fieldType name="text_it" class="solr.TextField" positionIncrementGap="100">
        <analyzer>
          <tokenizer class="solr.StandardTokenizerFactory"/>
          <filter class="solr.ElisionFilterFactory" articles="lang/contractions_it.txt" ignoreCase="true"/>
          <filter class="solr.LowerCaseFilterFactory"/>
          <filter class="solr.StopFilterFactory" format="snowball" words="lang/stopwords_it.txt" ignoreCase="true"/>
          <filter class="solr.ItalianLightStemFilterFactory"/>
        </analyzer>
      </fieldType>
      <fieldType name="text_ja" class="solr.TextField" autoGeneratePhraseQueries="false" positionIncrementGap="100">
        <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" words="lang/stopwords_ja.txt" ignoreCase="true"/>
          <filter class="solr.JapaneseKatakanaStemFilterFactory" minimumLength="4"/>
          <filter class="solr.LowerCaseFilterFactory"/>
        </analyzer>
      </fieldType>
      <fieldType name="text_lv" class="solr.TextField" positionIncrementGap="100">
        <analyzer>
          <tokenizer class="solr.StandardTokenizerFactory"/>
          <filter class="solr.LowerCaseFilterFactory"/>
          <filter class="solr.StopFilterFactory" words="lang/stopwords_lv.txt" ignoreCase="true"/>
          <filter class="solr.LatvianStemFilterFactory"/>
        </analyzer>
      </fieldType>
      <fieldType name="text_nl" class="solr.TextField" positionIncrementGap="100">
        <analyzer>
          <tokenizer class="solr.StandardTokenizerFactory"/>
          <filter class="solr.LowerCaseFilterFactory"/>
          <filter class="solr.StopFilterFactory" format="snowball" words="lang/stopwords_nl.txt" ignoreCase="true"/>
          <filter class="solr.StemmerOverrideFilterFactory" dictionary="lang/stemdict_nl.txt" ignoreCase="false"/>
          <filter class="solr.SnowballPorterFilterFactory" language="Dutch"/>
        </analyzer>
      </fieldType>
      <fieldType name="text_no" class="solr.TextField" positionIncrementGap="100">
        <analyzer>
          <tokenizer class="solr.StandardTokenizerFactory"/>
          <filter class="solr.LowerCaseFilterFactory"/>
          <filter class="solr.StopFilterFactory" format="snowball" words="lang/stopwords_no.txt" ignoreCase="true"/>
          <filter class="solr.SnowballPorterFilterFactory" language="Norwegian"/>
        </analyzer>
      </fieldType>
      <fieldType name="text_pt" class="solr.TextField" positionIncrementGap="100">
        <analyzer>
          <tokenizer class="solr.StandardTokenizerFactory"/>
          <filter class="solr.LowerCaseFilterFactory"/>
          <filter class="solr.StopFilterFactory" format="snowball" words="lang/stopwords_pt.txt" ignoreCase="true"/>
          <filter class="solr.PortugueseLightStemFilterFactory"/>
        </analyzer>
      </fieldType>
      <fieldType name="text_ro" class="solr.TextField" positionIncrementGap="100">
        <analyzer>
          <tokenizer class="solr.StandardTokenizerFactory"/>
          <filter class="solr.LowerCaseFilterFactory"/>
          <filter class="solr.StopFilterFactory" words="lang/stopwords_ro.txt" ignoreCase="true"/>
          <filter class="solr.SnowballPorterFilterFactory" language="Romanian"/>
        </analyzer>
      </fieldType>
      <fieldType name="text_ru" class="solr.TextField" positionIncrementGap="100">
        <analyzer>
          <tokenizer class="solr.StandardTokenizerFactory"/>
          <filter class="solr.LowerCaseFilterFactory"/>
          <filter class="solr.StopFilterFactory" format="snowball" words="lang/stopwords_ru.txt" ignoreCase="true"/>
          <filter class="solr.SnowballPorterFilterFactory" language="Russian"/>
        </analyzer>
      </fieldType>
      <fieldType name="text_sv" class="solr.TextField" positionIncrementGap="100">
        <analyzer>
          <tokenizer class="solr.StandardTokenizerFactory"/>
          <filter class="solr.LowerCaseFilterFactory"/>
          <filter class="solr.StopFilterFactory" format="snowball" words="lang/stopwords_sv.txt" ignoreCase="true"/>
          <filter class="solr.SnowballPorterFilterFactory" language="Swedish"/>
        </analyzer>
      </fieldType>
      <fieldType name="text_th" class="solr.TextField" positionIncrementGap="100">
        <analyzer>
          <tokenizer class="solr.ThaiTokenizerFactory"/>
          <filter class="solr.LowerCaseFilterFactory"/>
          <filter class="solr.StopFilterFactory" words="lang/stopwords_th.txt" ignoreCase="true"/>
        </analyzer>
      </fieldType>
      <fieldType name="text_tr" class="solr.TextField" positionIncrementGap="100">
        <analyzer>
          <tokenizer class="solr.StandardTokenizerFactory"/>
          <filter class="solr.ApostropheFilterFactory"/>
          <filter class="solr.TurkishLowerCaseFilterFactory"/>
          <filter class="solr.StopFilterFactory" words="lang/stopwords_tr.txt" ignoreCase="false"/>
          <filter class="solr.SnowballPorterFilterFactory" language="Turkish"/>
        </analyzer>
      </fieldType>
      <fieldType name="text_ws" class="solr.TextField" positionIncrementGap="100">
        <analyzer>
          <tokenizer class="solr.WhitespaceTokenizerFactory"/>
        </analyzer>
      </fieldType>
    
      <fieldType name="tfloat" class="solr.TrieFloatField" positionIncrementGap="0" precisionStep="8"/>
      <fieldType name="tint" class="solr.TrieIntField" positionIncrementGap="0" precisionStep="8"/>
      <fieldType name="tlong" class="solr.TrieLongField" positionIncrementGap="0" precisionStep="8"/>
    
    
      <field name="id" type="string" multiValued="false" indexed="true" required="true" stored="true"/>
      <field name="name" type="string" indexed="true" stored="true"/>
      <field name="isbn" type="string" indexed="true" stored="true"/>
      <field name="_version_" type="long" indexed="true" stored="true"/>
    </schema>
    • 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
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89
    • 90
    • 91
    • 92
    • 93
    • 94
    • 95
    • 96
    • 97
    • 98
    • 99
    • 100
    • 101
    • 102
    • 103
    • 104
    • 105
    • 106
    • 107
    • 108
    • 109
    • 110
    • 111
    • 112
    • 113
    • 114
    • 115
    • 116
    • 117
    • 118
    • 119
    • 120
    • 121
    • 122
    • 123
    • 124
    • 125
    • 126
    • 127
    • 128
    • 129
    • 130
    • 131
    • 132
    • 133
    • 134
    • 135
    • 136
    • 137
    • 138
    • 139
    • 140
    • 141
    • 142
    • 143
    • 144
    • 145
    • 146
    • 147
    • 148
    • 149
    • 150
    • 151
    • 152
    • 153
    • 154
    • 155
    • 156
    • 157
    • 158
    • 159
    • 160
    • 161
    • 162
    • 163
    • 164
    • 165
    • 166
    • 167
    • 168
    • 169
    • 170
    • 171
    • 172
    • 173
    • 174
    • 175
    • 176
    • 177
    • 178
    • 179
    • 180
    • 181
    • 182
    • 183
    • 184
    • 185
    • 186
    • 187
    • 188
    • 189
    • 190
    • 191
    • 192
    • 193
    • 194
    • 195
    • 196
    • 197
    • 198
    • 199
    • 200
    • 201
    • 202
    • 203
    • 204
    • 205
    • 206
    • 207
    • 208
    • 209
    • 210
    • 211
    • 212
    • 213
    • 214
    • 215
    • 216
    • 217
    • 218
    • 219
    • 220
    • 221
    • 222
    • 223
    • 224
    • 225
    • 226
    • 227
    • 228
    • 229
    • 230
    • 231
    • 232
    • 233
    • 234
    • 235
    • 236
    • 237
    • 238
    • 239
    • 240
    • 241
    • 242
    • 243
    • 244
    • 245
    • 246
    • 247
    • 248
    • 249
    • 250
    • 251
    • 252
    • 253
    • 254
    • 255
    • 256
    • 257
    • 258
    • 259
    • 260
    • 261
    • 262
    • 263
    • 264
    • 265
    • 266
    • 267
    • 268
    • 269
    • 270
    • 271
    • 272
    • 273
    • 274
    • 275
    • 276
    • 277
    • 278
    • 279
    • 280
    • 281
    • 282
    • 283
    • 284
    • 285
    • 286
    • 287
    • 288
    • 289
    • 290
    • 291
    • 292
    • 293
    • 294
    • 295
    • 296
    • 297
    • 298
    • 299
    • 300
    • 301
    • 302
    • 303
    • 304
    • 305
    • 306
    • 307
    • 308
    • 309
    • 310
    • 311
    • 312
    • 313
    • 314
    • 315
    • 316
    • 317
    • 318
    • 319
    • 320
    • 321
    • 322
    • 323
    • 324
    • 325
    • 326
    • 327
    • 328
    • 329
    • 330
    • 331
    • 332
    • 333
    • 334
    • 335
    • 336
    • 337
    • 338
    • 339
    • 340
    • 341
    • 342
    • 343
    • 344
    • 345
    • 346
    • 347
    • 348
    • 349
    • 350
    • 351
    • 352
    • 353
    • 354
    • 355
    • 356
    • 357
    • 358
    • 359
    • 360
    • 361
    • 362
    • 363
    • 364
    • 365
    • 366
    • 367
    • 368
    • 369
    • 370
    • 371
    • 372
    • 373
    • 374
    • 375
    • 376
    • 377
    • 378
    • 379
    • 380
    • 381
    • 382
    • 383
    • 384
    • 385
    • 386
    • 387
    • 388
    • 389
    • 390
    • 391
    • 392
    • 393
    • 394
    • 395
    • 396
    • 397
    • 398
    • 399
    • 400
    • 401
    • 402
    • 403
    • 404
    • 405
    • 406
    • 407
    • 408
    • 409
    • 410
    • 411
    • 412
    • 413
    • 414
    • 415
    • 416
    • 417
    • 418
    • 419

    注意schema标签的name改成example-DIH-db2,主键必须是id,必须要有id属性。db-data-config.xml 里面的field标签和 schema内部的field标签要对应。这样执行命令:

    solr -e dih
    • 1

    启动后访问 http://localhost:8983/solr 。可以看到db2核心。按照上面提到的下拉列表里面选择db2、点击Dataimport、Reload、Execute、Query,最后执行 Execute Query,就可以看到返回的JSON数据了。成功的界面如下:

    这里写图片描述

  • 相关阅读:
    《Python 源码阅读》之 类型Type
    《Python 源码剖析》之对象
    KMP匹配算法
    Python的递归深度
    js验证手机号
    Jquery 实现 “下次自动登录” 记住用户名密码功能
    js注册读秒进度条
    div+css进度条
    SprignMVC+myBatis整合
    ssm控制输出sql(二)
  • 原文地址:https://www.cnblogs.com/llhl/p/9648651.html
Copyright © 2020-2023  润新知