`
lavafree
  • 浏览: 538980 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

solr搜索智能提示Suggest

阅读更多

 

solr1.4以后实现的智能提示,方便用户输入搜索

 

Suggest配置

 

<searchComponent name="suggest" class="solr.SpellCheckComponent">
	<str name="queryAnalyzerFieldType">string</str>
	<lst name="spellchecker">  
		<str name="name">suggest</str>  
		<str name="classname">org.apache.solr.spelling.suggest.Suggester</str>  
		<str name="lookupImpl">org.apache.solr.spelling.suggest.tst.TSTLookup</str>  
		<str name="field">name</str>
		<float name="threshold">0.0001</float>
		<!--<str name="sourceLocation">suggest_dict.txt</str>-->
		<!--<str name="spellcheckIndexDir">spellchecker</str>-->
        <str name="comparatorClass">freq</str>
        <str name="buildOnOptimize">true</str>
		<str name="buildOnCommit">true</str>     
	</lst>  
  </searchComponent>    
 
  <requestHandler name="/suggest" class="org.apache.solr.handler.component.SearchHandler">  
	<lst name="defaults">  
		<str name="spellcheck">true</str>  
		<str name="spellcheck.dictionary">suggest</str>  
		<str name="spellcheck.count">8</str>  
		<str name="spellcheck.onlyMorePopular">true</str>
		<str name="spellcheck.extendedResults">false</str>		
		<str name="spellcheck.collate">true</str>
		<!--<str name="spellcheck.build">true</str>	-->	
	</lst>  
	<arr name="components">  
		<str>suggest</str>  
	</arr>  
  </requestHandler>

 说明:

 1.solr的suggest基于solr.SpellCheckComponent

 2.queryAnalyzerFieldType 参数为string,在这不要定义复杂分词,如果是根据某一个索引字段,意义不大

 3.field字段名,表示基于schema中的某一个索引字段

 4.threshold限制一些不常用的词出现,值越大过滤纸越多

 5.sourceLocation用于设置字典,如果有一个字典能记录用户常搜索的字,那提示更更好

 6.spellcheckIndexDir如果已经设置spellcheck,那么可以在此制定目录

 7.字典格式如下

# This is a sample dictionary file.

acquire

accidentally\t2.0

accommodate\t3.0

文本格式utf-8,#开头表示注释,被忽略

每一个词一行,后面带权重

 8.配置词典后在requestHandler中设置spellcheck.onlyMorePopular为true,可以根据权重排序

 9.spellcheck.count返回行

 

 配置完成重启服务后,设置参数suggest/?spellcheck.build=true来创建spellchecker的索引

 

 然后输入:http://ip:port/corename/suggest?q=xxx进行搜索了

 接下来就是前台js实现的问题了。

 当然也可以通过solrj来进行搜索

 

CommonsHttpSolrServer server = new CommonsHttpSolrServer(
				"http://ip:port/corename/");
	SolrQuery params = new SolrQuery();
		String token = "牛";
		params.set("qt", "/suggest");
		params.set("q", token);
		params.set("spellcheck.build", "true");
		QueryResponse response = null;

		try {
			response = server.query(params);
			System.out.println("查询耗时:" + response.getQTime());
		} catch (SolrServerException e) {
			System.err.println(e.getMessage());
			e.printStackTrace();
		} catch (Exception e) {
			System.err.println(e.getMessage());
			e.printStackTrace();
		} finally {
		}

		SpellCheckResponse spellCheckResponse = response
				.getSpellCheckResponse();
		if (spellCheckResponse != null) {
			List<Suggestion> suggestionList = spellCheckResponse
					.getSuggestions();
			for (Suggestion suggestion : suggestionList) {
				System.out.println("Suggestions NumFound: "
						+ suggestion.getNumFound());
				System.out.println("Token: " + suggestion.getToken());
				System.out.print("Suggested: ");
				List<String> suggestedWordList = suggestion.getAlternatives();
				for (String word : suggestedWordList) {
					System.out.println(word + ", ");
				}
				System.out.println();
			}
		}

 这样就可以。

 

对于Suggest,个人的想法,字典是一种好的方式,但是增加字典比较麻烦,还有可以独立一个字段,对该字段做一些特殊的分词,比如像商品搜索类,整个标题可以是一个词,中文,数字,英文,符号等间隔的分开,这个具体还是看应用了。

 

现在我在诚交网易货商品搜索上用的是字段的方式,新建一个单独的排序字段,然后把需要提示的字段拷贝过来,效果还算可以,大家看下图或去诚交网体验一下。

 

  • 大小: 53.3 KB
分享到:
评论
3 楼 panghaoyu 2017-03-15  
实现一个智能提示功能需要ajax、数据库、jsp/php、算法等很多知识,
如果数据量大,还需要特殊优化
一个小功能,花费太大精力很不划算
我使用了92find.c-o-m的搜索框智能提示功能托管服务,
只要一行javascript代码就可以实现百度、淘宝搜索框提示的全部功能
比如:汉字拼音匹配、拼音前缀匹配、模糊搜索、智能容错,还可以自定义提示词汇及其排序权重
花五分钟我的网站就可以部署同百度、淘宝一样强大好用的输入提示功能
同时兼容IE、Firefox、Safari、Chrome、Opera各种浏览器
兼容ios、Android、Windows
2 楼 wlnily2005 2014-10-29  
哥们,能给个完成的配置吗?你用的solr是什么版本?我用的4.6,无法实现啊
1 楼 dandongsoft 2014-09-15  
哥们咨询你点问题,solr中字典 和suggestion 能同时使用?

相关推荐

    solr搜索自动补全

    这一步骤可能涉及到配置suggest.js插件的一些参数,比如Solr服务器的地址,搜索的字段,以及其他配置项,以确保插件与你的Solr索引正确配合。 4. 服务端配置。开发者需要在Solr端配置相应的自动补全逻辑,通常需要...

    相关性搜索利用Solr与Elasticsearch创建智能应用

    资源名称:相关性搜索 利用Solr与Elasticsearch创建智能应用内容简介:《相关性搜索:利用Solr与Elasticsearch创建智能应用》揭开了相关性搜索的神秘面纱,告诉大家如何将 Elasticsearch与 Solr这样的搜索引擎作为可...

    solr搜索引擎的使用介绍

    Solr搜索引擎的使用介绍 Solr,全称为Apache Solr,是Apache软件基金会的一个开源项目,基于Java开发,是一款高效、灵活且强大的全文检索服务引擎。它构建在Lucene库之上,提供了更高级别的企业级搜索功能,如...

    ES和solr搜索方案对比

    ES(ElasticSearch)和Solr都是基于Lucene的搜索引擎,它们各自提供了一套搜索框架,用于实现高效的全文搜索功能。由于两者都是在Apache License 2下开源的,因此在选择使用哪种搜索方案时,需要根据不同的使用场景...

    solr7.5_ik分词器,suggest配置源文件文件

    Suggest组件则为Solr提供了自动补全和提示功能,极大地提升了用户体验。 标题中的“solr7.5_ik分词器,suggest配置源文件”指的是在Solr 7.5版本中使用Ik分词器和Suggest组件进行配置和使用的源文件。Ik分词器是...

    solr-smart-suggest:用于智能自动建议的 Solr 插件

    solr-smart-建议您需要将以下 jar 文件包含到类路径中以编译 solr-smart-suggest 组件: lucene-core-4.10.3-SNAPSHOT.jar lucene-analyzers-common-4.10.3-SNAPSHOT.jar lucene-suggest-4.10.3-SNAPSHOT.jar solr-...

    solr搜索引擎

    Solr搜索引擎是一款强大的开源全文搜索和分析引擎,由Apache软件基金会开发并维护。它主要设计用于处理大量数据的高效检索,支持多种数据源,并提供高度可扩展性和容错性。在深入探讨Solr之前,我们先来理解一下什么...

    solr搜索服务器安装配置

    ### Solr搜索服务器安装配置详解 #### 一、Solr简介 Apache Solr是一款开源的高性能全文搜索引擎,基于Lucene库构建。它采用Java开发,提供了丰富的API接口,支持多种编程语言,使得开发者能够轻松地集成搜索功能到...

    人工智能-项目实践-搜索引擎-使用solr搜索引擎 利用Spring springmvc 框架 在页面实现一些组合查询

    使用solr搜索引擎 利用Spring springmvc 框架 在页面实现一些组合查询

    solr-7.1.0.zip solr搜索引擎安装包

    Solr,全称为Apache Solr,是Apache软件基金会的一个开源项目,主要提供高速、可扩展的全文检索、命中高亮、拼写检查、查询分析等功能,广泛应用于企业级搜索应用。它基于Java语言开发,使用Lucene库作为其核心搜索...

    人工智能-项目实践-搜索引擎-基于solr的中文搜索引擎框架

    标题中的“人工智能-项目实践-搜索引擎-基于solr的中文搜索引擎框架”揭示了这个压缩包文件包含的内容主要是关于人工智能领域的一个具体项目实践,这个实践聚焦于搜索引擎的构建,且是针对中文文本的。Solr,作为...

    人工智能-项目实践-搜索引擎-基于solrj开发solr主从搜索引擎服务的dubbo组件

    《基于Solrj开发Solr主从搜索引擎服务的Dubbo组件》 在现代信息技术领域,搜索引擎作为信息检索的重要工具,其高效、精准的搜索能力对于企业和用户来说具有极高的价值。本项目实践聚焦于利用Solrj开发一个支持主从...

    solr搜索插件

    Solr搜索插件是基于Apache Solr开发的一款用于高效关键词搜索的工具,它极大地提升了数据检索的速度和准确性。Apache Solr是一款开源的企业级全文搜索引擎,它由Java编写,设计目标是提供快速、可扩展的近实时搜索...

    相关性搜索 利用Solr与Elasticsearch创建智能应用

    本书揭开了相关性搜索的神秘面纱,告诉大家如何将Elasticsearch 或Solr 这样的搜索引擎作为可编程的相关性框架,从而表达业务排名规则。从这本书中你可学会如何结合各种外部数据源、分类方法以及文本分析手段对...

    solr搜索引擎-课程文件培训

    1.学员操作手册-Solr搜索自动补全 2.solr实训教程.doc 3.积分商城基于Solr的搜索引擎优化.pdf 4.基于Solr的搜索引擎优化讲义.pdf 5.课程大纲-基于搜索引擎培训.doc 6.学员操作手册-Solr数据库插入索引.doc 7.学员...

    solr搜索引擎服务

    sorl搜索引擎安装与文件,Solr 是Apache下的一个顶级开源项目,采用Java开发,它是基于Lucene的全文搜索服务器。Solr提供了比Lucene更为丰富的查询语言,同时实现了可配置、可扩展,并对索引、搜索性能进行了优化。

    solr搜索引擎支持分页

    Solr搜索引擎支持分页是其核心特性之一,它在处理大量数据检索时,为了提高用户体验,提供了高效且灵活的分页解决方案。Solr是基于Java的开源全文搜索服务器,采用了Apache Lucene作为其核心搜索引擎库。Lucene是...

    solr 企业搜索引擎教程

    ### Apache Solr 企业搜索引擎教程知识点总结 #### 1. Apache Solr 概述 - **Solr**:Apache Solr 是一款高度可扩展且高性能的企业级搜索平台,由Apache软件基金会维护。它是一个开源搜索服务器,使用Java语言编写...

    apache solr搜索系统的.Net实现

    apache solr搜索系统的.Net实现

Global site tag (gtag.js) - Google Analytics