solr8.3.1配置+IK分词器配置+数据库配置

参考文献

Solr分词搜索solrj简单查询

solr-8.3.1版本连接MySQL、配置IK分词器

Solr配置完分词器后Analysis分词有效果,查询时分词无效果的解决

集成环境

  • windows10
  • jdk8
  • solr8.3.1
  • ik-analyzer-8.3.0

工具资源下载

启动solr

 .\solr start

停止solr

 .\solr stop -all

重启solr

.\solr restart -port 8983

集成IK分词器

  • 将下好的IK分词器jar 复制到\solr-8.3.1\server\solr-webapp\webapp\WEB-INF\lib下

  • 配置managed-schema 打开solr-8.3.1\server\solr\需要配置的core名字\conf

    <!-- ik分词器 -->
    <fieldType name="text_ik" class="solr.TextField">
        <analyzer class="org.wltea.analyzer.lucene.IKAnalyzer" luceneMatchVersion="8.3.1"/>
        <analyzer type="index">
            <tokenizer class="org.wltea.analyzer.lucene.IKTokenizerFactory" useSmart="false" conf="ik.conf"/>
            <filter class="solr.LowerCaseFilterFactory"/>
        </analyzer>
        <analyzer type="query">
            <tokenizer class="org.wltea.analyzer.lucene.IKTokenizerFactory" useSmart="true" conf="ik.conf"/>
            <filter class="solr.LowerCaseFilterFactory"/>
        </analyzer>
    </fieldType>
    

配置数据库

  • 打开 solr-8.3.1\dist 文件夹,将里面的solr-dataimporthandler-x.x.x.jarsolr-dataimporthandler-extras-x.x.x.jar 以及数据库连接驱动 mysql-connector-java.jar 复制到 solr-8.3.1\server\solr-webapp\webapp\WEB-INF\lib 里面

  • solr-8.3.1\server\solr 里面新建文件夹(文件夹的名字就是后面core的名字)

  • 拷贝 solr-8.3.1\server\solr\configsets\_default 文件夹下中的conf文件夹到上面新建的文件夹中(solr-8.3.1\server\solr\configsets\sample_techproducts_configs中其他文件夹中的conf文件夹也可以)

  • 打开 solr-8.3.1\server\solr\新建的文件夹\conf\solrconfig.xml

    • 找到下面的配置

      <requestHandler name="/select" class="solr.SearchHandler">
      
    • 在它上面加上以下配置

      <requestHandler name="/dataimport"
          class="org.apache.solr.handler.dataimport.DataImportHandler"> 
              <lst name="defaults"> 
                  <!-- 这里是数据库配置文件的路径 -->
                  <str name="config">data-config.xml</str> 
              </lst>  
      </requestHandler>
      
  • solr-8.3.1\server\solr\新建的文件夹\conf中新建文件 data-config.xml,和上面添加配置中的名字统一

    <?xml version="1.0" encoding="UTF-8" ?>
    <dataConfig>
      <dataSource 
                  type="JdbcDataSource" 
                  driver="com.mysql.cj.jdbc.Driver"               
                  url="jdbc:mysql://127.0.0.1:3306/gov_policy?characterEncoding=utf8&amp;zeroDateTimeBehavior=convertToNull&amp;useSSL=false&amp;useJDBCCompliantTimezoneShift=true&amp;useLegacyDatetimeCode=false&amp;serverTimezone=GMT%2B8&amp;allowMultiQueries=true&amp;allowPublicKeyRetrieval=true" 
                  user="root" 
                  password="root" />
      <document>
        <entity name="repo_policy" query="select * from repo_policy" deltaQuery="select * from repo_policy">
          <!-- column:数据库表字段名;  name:name对应之后managed-schema文件配置的name -->
          <field column="r_title" name="r_title" />
          <field column="id" name="id" />
          <entity name="repo_policy_content" query="select content from repo_policy_content where policy_id = '${repo_policy.id}'" deltaQuery="select * from repo_policy_content">
            <field column="content" name="r_content"/>
          </entity>
        </entity>
      </document>
    </dataConfig>
    
    • query是获取全部数据的SQL
    • deltaImportQuery是获取增量数据时使用的SQL
    • deltaQuery是获取pk的SQL
    • parentDeltaQuery是获取父Entity的pk的SQL
  • 打开 solr-8.3.1\server\solr\新建的文件夹\conf\managed-schema 并配置与上面data-config.xml相应的域

    <field name="r_title" type="text_ik" uninvertible="true" indexed="true" stored="true"/>
    <field name="r_content" type="text_ik" uninvertible="true" indexed="true" stored="true"/>
    

测试IK和数据库集成

  • 启动solr,进入后台 http://127.0.0.1:8983/solr

  • 点击Core Admin,新建solr核心 corenameinstanceDir的名称与我们新建的文件夹名称相同,然后点击Add Core进创建成功了!

  • 左侧的Core Selector中找到我们新建的文件夹名称打开

  • 测试数据库配置

    • 点击Dataimport,其中在Entity中就可以找到我们在配置文件中添加的数据库名称了,选择数据库,点击Execute
      • 如果找不到,就说明data-config.xml的配置有误
    • 点击左侧Query,什么都不选,直接点击ExecuteQuery就可以看到数据库中的数据了
  • 测试IK分词器

    • 点击Analysis,在Field Value (Index)输入需要分词的语句

    • **Analyse Fieldname / FieldType **下拉框中选择上面配置的域 r_title

    • 点击右边的Analyse Values就可以看到结果了

错误总结

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 220,809评论 6 513
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 94,189评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 167,290评论 0 359
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,399评论 1 294
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,425评论 6 397
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 52,116评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,710评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,629评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 46,155评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,261评论 3 339
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,399评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 36,068评论 5 347
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,758评论 3 332
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,252评论 0 23
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,381评论 1 271
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,747评论 3 375
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,402评论 2 358

推荐阅读更多精彩内容