IKanalyzer中文分词器
程序员文章站
2022-05-09 13:50:37
...
安装
cp IKAnalyzer2012FF_u1.jar /usr/local/tomcat/webapps/solr/WEB-INF/lib/ <!--复制jar包到tomcat的solr工程下 -->
mkdir /usr/local/tomcat/webapps/solr/WEB-INF/classes <!-- 在solr的工程下的WEB-INF创建一个classes,需要把IKAnalyzer2012FF_u1的配置文件放在classpath下 -->
cp ext_stopword.dic IKAnalyzer.cfg.xml mydict.dic /usr/local/tomcat/webapps/solr/WEB-INF/classes/ <!-- 把分词器的配置文件复制到classes下面 -->
修改xml文件
cd solrhome <!--打开之前设置的solrhome目录 -->
cd collection1/conf
vim schema.xml <!--打开配置文件 -->
<!-- 定义一个filedType-->
<fieldType name="text_ik" class="solr.TextField">
<analyzer class="org.wltea.analyzer.lucene.IKAnalyzer"/>
</fieldType>
<!--复制一份业务域:示例 -->
<field name="item_title" type="text_ik" indexed="true" stored="true"/>
<field name="item_sell_point" type="text_ik" indexed="true" stored="true"/>
<field name="item_price" type="long" indexed="true" stored="true"/>
<field name="item_image" type="string" indexed="false" stored="true" />
<field name="item_category_name" type="string" indexed="true" stored="true" />
<field name="item_keywords" type="text_ik" indexed="true" stored="false" multiValued="true"/>
<!--复制域, 当添加 item_keywords 这个字段时候,会自动添加到 item_title item_sell_point 。。。。 上, 本质上是对搜索的优化,任意一个域中只要包含这个字段都可以搜索出来 -->
<copyField source="item_title" dest="item_keywords"/>
<copyField source="item_sell_point" dest="item_keywords"/>
<copyField source="item_category_name" dest="item_keywords"/>
测试
SolrJ
约束
<dependency>
<groupId>org.apache.solr</groupId>
<artifactId>solr-solrj</artifactId>
<version>${solrj.version}</version>
</dependency>
测试类
@Test
public void SolrJdemo1() throws SolrServerException, IOException{
SolrServer server = new HttpSolrServer("http://192.168.25.135:8080/solr/collection1" );//Solr服务对象
SolrInputDocument document = new SolrInputDocument();//solr文档对象
<!-- 在文档中添加Schem.xml中设置的域-->
document.addField("id", "demo1");
document.addField("item_title", "商品1");
document.addField("item_price", 1000);
server.add(document); //文档写入索引库
server.commit();//事务提交
}