项目笔记learn09(solr-1)

1.建立在Lucene(全文搜索引擎)之上,不仅限于搜索,Solr也可以用于存储目的。像其他NoSQL数据库一样,它是一种非关系数据存储和处理技术(需引入中文分析器)

2.复制域的作用在于将某一个Field中的数据复制到另一个域中(联合搜索)

3.需要动态扩充字段时,使用动态域。

<field name="item_goodsid" type="long" indexed="true" stored="true"/>
<field name="item_keywords" type="text_ik" indexed="true" stored="false" multiValued="true"/>
<copyField source="item_title" dest="item_keywords"/>
<dynamicField name="item_spec_*" type="string" indexed="true" stored="true" />	

3.简单使用

1.pom.xml引入依赖

	<dependency>
	    <groupId>org.springframework.data</groupId>
	    <artifactId>spring-data-solr</artifactId>
	    <version>1.5.5.RELEASE</version>
	</dependency> 

2.配置 applicationContext-solr.xml

<!-- solr服务器地址 -->
	<solr:solr-server id="solrServer" url="http://127.0.0.1:8080/solr" />
	<!-- solr模板,使用solr模板可对索引库进行CRUD的操作 -->
	<bean id="solrTemplate" class="org.springframework.data.solr.core.SolrTemplate">
		<constructor-arg ref="solrServer" />
	</bean>

3.实体类属性使用@Field注解标识 。如果属性与配置文件定义的域名称不一致,需要在注解中指定域名称

public class TbItem implements Serializable{
			@Field
		    private Long id;
		
			@Field("item_title")
		    private String title;
		    
			@Dynamic
		    @Field("item_spec_*")
			private Map<String,String> specMap;			//动态域
		    ....
    }

.4.调用方法存数据进索引库

	@Autowired
	private SolrTemplate solrTemplate;
	solrTemplate.saveBeans(itemList);
	solrTemplate.commit();
	...
	Query query=new SimpleQuery("*:*");
		Criteria criteria=new Criteria("item_title").contains("2");
		criteria=criteria.and("item_title").contains("5");	//继续添加条件	
		query.addCriteria(criteria);
		//query.setOffset(20);//开始索引(默认0)
		//query.setRows(20);//每页记录数(默认10)
		ScoredPage<TbItem> page = solrTemplate.queryForPage(query, TbItem.class);

补:
1.读取配置文件创建对象:

		ApplicationContext context=new ClassPathXmlApplicationContext("classpath*:spring/applicationContext*.xml");
		SolrUtil solrUtil=  (SolrUtil) context.getBean("solrUtil");
		//加载配置文件创建Bean对象

2.将spec字段中的json字符串转换为map
Map specMap= JSON.parseObject(item.getSpec());

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值