乐趣区

solr-创建core

直接使用 solr create -c coreName 创建 core, 会在 server 文件夹下的 solr 文件夹下得到新创建的 core


配置新建的 core 中,的 conf 文件夹下的 solrconfig.xml 文件,在新建的 core 中,的 conf 文件夹啊下,在 solrconfig.xml 文件后面加入

<!-- 引入 DataImportHandler 类的 jar-->
<lib dir="${solr.install.dir:../../../..}/dist/" regex="solr-dataimporthandler-.*\.jar" />
  <requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler">
    <lst name="defaults">
      <str name="config">db-data-config.xml</str>
    </lst>
  </requestHandler>

这里的配置表示 mycore 的数据导入使用 solr 的 DataImportHandler,而这个 handler 所在的 jar 位于 E:solr-7.4.0solr-7.4.0dist 目录里面, 解压的时候就有,通过配置 lib 节点来进行引入。

配置 managed-schema 文件,与前面的 solrconfig.xml 文件在同一个目录下

<!-- 分词器 -->
    <fieldType name="content_ik" class="solr.TextField"> 
        <analyzer type="index" isMaxWordLength="false" class="org.wltea.analyzer.lucene.IKAnalyzer"/> 
        <analyzer type="query" isMaxWordLength="true" class="org.wltea.analyzer.lucene.IKAnalyzer"/> 
    </fieldType>
 <!-- 添加对应于数据库字段的 field-->
 <!-- 配置从数据库导入到 sorl 中的数据的字段内容,所以每次要从数据库导入什么就需要配置什么 -->
 <!--name:指定域的名称,indexed:是否索引,type:指定域的类型,stored:是否存储,required:是否必须 -->
 <field name="product_name" type="string" indexed="true" stored="true"/>
 <field name="product_price" type="string" indexed="true" stored="true"/>
 <field name="product_description" type="content_ik" indexed="true" stored="true" multiValued="false" />
 <field name="product_picture" type="string" indexed="true" stored="true"/>
 <field name="product_catalog_name" type="content_ik" indexed="true" stored="true" multiValued="false" />
 <!-- 设置部分字段搜索,当搜索条件为 product_keywords 时,会搜索以下所有字段匹配数据,-->
 <!--multiValued:是否多值,比如商品信息中,一个商品有多张图片,一个 Field 想存储多个值的话,必须将 multiValued 设置为 true-->
 <field name="product_keywords" type="content_ik" indexed="true" stored="true" multiValued="true" />
 <copyField source="product_name" dest="product_keywords" />
 <copyField source="product_description" dest="product_keywords" />
 <copyField source="product_price" dest="product_keywords"/>
 <copyField source="product_catalog_name" dest="product_keywords"/>

需要注意的是,在设置了 stored=”ture”, 的时候,会将数据保存到 solr 中,所以,即使设置 indexed=”false”,不建立索引,在搜索的时候,也能搜索到。
配置 db-data-config.xml,这个是关联数据库的,可以将数据库中的数据,保存到 solr 中,要加 mysql 的 jar 包

<?xml version="1.0" encoding="UTF-8" ?>
<dataConfig>
    <dataSource driver="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost:3306/solr?useSSL=false" user="root" password="123456"/>
    <document>
        <entity name="product" query="SELECT * FROM product">
           <field column="pid" name="id" />
           <field column="name" name="product_name" />
           <field column="catalog_name" name="product_catalog_name" />
           <field column="price" name="product_price" />
           <field column="description" name="product_description" />
           <field column="picture" name="product_picture" />
        </entity>
    </document>
</dataConfig>

三个文件的位置:

最后测试下,
导入数据库中的数据


搜索

可以成功得到数据库的数据,以及搜索到数据
在配置 core 中的文件的时候,一开始,我是直接复制的 solr{home}exampleexample-DIHsolrdb 下的文件


然后进行的配置。其他一切都正常,但是在搜索单个字符的时候,会搜索不到


具体不知道是什么原因
因为是新人,刚开始接触 solr,所以还有非常多不懂的,基本上都是根据网上的资料来完成的,如果有问题麻烦各位大大帮忙指出来,感谢感谢

退出移动版