solr查询服务配置

  • schema.xml
    schema.xml,在SolrCore的conf目录下,它是Solr数据表配置文件,它定义了加入索引的数据的数据类型的。
    -fieldType域定义
<fieldType name="text_general" class="solr.TextField" positionIncrementGap="100">

name:是这个FieldType的名称
class:是Solr提供的包solr.TextField,solr.TextField 允许用户通过分析器来定制索引和查询,分析器包括一个分词器(tokenizer)和多个过滤器(filter)
positionIncrementGap:可选属性,定义在同一个文档中此类型数据的空白间隔,避免短语匹配错误,此值相当于Lucene的短语查询设置slop值,根据经验设置为100。
自定义fieldType加入ik分析器

   <fieldType name="text_ik" class="solr.TextField">
	  <analyzer class="org.wltea.analyzer.lucene.IKAnalyzer"/>
	</fieldType>
  • field域
<field name="name" type="text_general" indexed="true" stored="true"/>
<field name="features" type="text_general" indexed="true" stored="true" multiValued="true"/>

filed定义包括name,type(为之前定义过的各种FieldType),indexed(是否被索引),stored(是否被储存),multiValued(是否存储多个值)等属性.

  • uniqueKey
    Solr中默认定义唯一主键key为id域
  • copyField复制域
    copyField复制域,可以将多个Field复制到一个Field中,以便进行统一的检索
  <field name="product_keywords" type="text_ik" indexed="true" stored="false"        multiValued="true"/>
	<copyField source="product_name" dest="product_keywords"/>
	<copyField source="product_description" dest="product_keywords"/>
  • 安装中文分析器
    步骤:1.把IKAnalyzer2012FF_u1.jar添加到solr/WEB-INF/lib目录下
    2.复制IKAnalyzer的配置文件和自定义词典和停用词词典到solr的classpath下
    3.在schema.xml中添加一个自定义的fieldType,使用中文分析器
    <fieldType name="text_ik" class="solr.TextField">
	  <analyzer class="org.wltea.analyzer.lucene.IKAnalyzer"/>
	</fieldType>

4.定义field,指定field的type属性为text_ik

 <field name="title_ik" type="text_ik" indexed="true" stored="true"/>
 <field name="content_ik" type="text_ik" indexed="true" stored="true" multiValued="true"/>
  • 加入批量导入数据插件
    1.把dataimport插件依赖的jar包添加到solrcore(collection1\lib)中,还需要加入mysql驱动包
    2.配置solrconfig.mxl文件,添加一个requestHandler
<requestHandler name="/dataimport" 
class="org.apache.solr.handler.dataimport.DataImportHandler">
     <lst name="defaults">
      <str name="config">data-config.xml</str>
     </lst>
     </requestHandler> 

3.创建一个data-config.xml,保存到collection1\conf\目录下

<?xml version="1.0" encoding="UTF-8" ?>  
<dataConfig>   
<dataSource type="JdbcDataSource"   
		  driver="com.mysql.jdbc.Driver"   
		  url="jdbc:mysql://localhost:3306/lucene"   
		  user="root"   
		  password="root"/>   
<document>   
	<entity name="product" query="SELECT pid,name,catalog_name,price,description,picture FROM products ">
		 <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>

导入数据前会先清空索引库,然后再导入

猜你喜欢

转载自blog.csdn.net/sinat_29211659/article/details/82844697