共计 2752 个字符,预计需要花费 7 分钟才能阅读完成。
直接使用 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,所以还有非常多不懂的,基本上都是根据网上的资料来完成的,如果有问题麻烦各位大大帮忙指出来,感谢感谢