/ng-solr

solr-demo for product and news

Primary LanguageJava

#solr搜索项目 -- open version 操作solr使用spring-data-solr

##product 商品搜索

##new 新闻搜索

##boost打分 @Boost注解

Criteria webpage= new Criteria("category").is("webpage").boost((float) 1000);
Criteria document= new Criteria("category").is("document").boost((float) 2);
Criteria combined= webpage.or( document);
Criteria criteria = new SimpleStringCriteria("(visibility:(visible^1000) OR visibility:(draft^500) OR visibility:(archived))");

##Highlight显示 @Highlight注解

HighlightPage queryForHighlightPage方法

for(HighlightEntry<News> highlightEntry:highlightList.getHighlighted()){
	News newsEntity = highlightEntry.getEntity();//真实对象
	for(Highlight highlight:highlightEntry.getHighlights()){
		if(highlight.getField().getName().equals("content")){
			newsEntity.setContent(highlight.getSnipplets().get(0));
		}else if(highlight.getField().getName().equals("title")){
			newsEntity.setTitle(highlight.getSnipplets().get(0));
		}
	}
}

##相关度查询 方法一:MoreLikeThisComponent

//mlt在查询时,打开/关闭 MoreLikeThisComponent 的布尔值
query.setParam("mlt", "true"); 
//fl 需要返回的字段
query.setParam("fl", "score,ask");
//mtl.fl 根据哪些字段判断相似度
query.setParam("mlt.fl", "ask");  
//mlt.mintf 最小分词频率,在单个文档中出现频率小于这个值的词将不用于相似判断
query.setParam("mlt.mintf", "1");
//mlt.mindf 最小文档频率,所在文档的个数小于这个值的词将不用于相似判断
query.setParam("mlt.mindf", "1");  

方法二:MoreLikeThisHandler 首先在 solrconfig.xml 中配置 MoreLikeThisHandler

<requestHandler name="/mlt" class="solr.MoreLikeThisHandler"> 
	<lst name="defaults">
		<str name="mlt">true</str>
		<str name="mlt.fl">title,content</str>
		<str name="mlt.mindf">1</str>
		<str name="mlt.mintf">1</str>
	</lst>
</requestHandler>