solr 使用 suggest 自动 提示,查询不到结果 SpellCheckComponent

发布于 2021-11-30 03:53:28 字数 4142 浏览 746 评论 2

@震秦 你好,想跟你请教个问题:

@震秦 你好,想跟你请教个问题: 

<!-- mm suggest,, copyField is merge field a to dest=ab-->
	<searchComponent name="suggest" class="solr.SpellCheckComponent">
	  <str name="queryAnalyzerFieldType">textSpell</str> 
	  <lst name="spellchecker">
		<str name="name">direct</str>
		<str name="field">productName</str>
		<str name="classname">solr.DirectSolrSpellChecker</str> 
		<str name="distanceMeasure">internal</str> 
		<float name="accuracy">0.5</float> 
		<int name="maxEdits">2</int> 
		<int name="minPrefix">1</int> 
		<int name="maxInspections">5</int> 
		<int name="minQueryLength">4</int> 
		<float name="maxQueryFrequency">0.01</float>
		<!--<str name="sourceLocation">dict.txt</str>--> <!--if appoint the sourceLocation,the field is not work-->  
	  </lst>
	</searchComponent>


<!--mm suggest-->
	<requestHandler name="/suggest" class="solr.SearchHandler" startup="lazy">
	  <lst name="defaults">
		<str name="df">text</str>
		<str name="spellcheck.dictionary">direct</str> 
		<str name="spellcheck">on</str> 
		<str name="spellcheck.extendedResults">true</str>       
		<str name="spellcheck.count">10</str> 
		<str name="spellcheck.collate">true</str> 
		<str name="spellcheck.collateExtendedResults">true</str> 
	  </lst>
	  <arr name="last-components">
		<str>suggest</str>
	  </arr>
	</requestHandler>



solrj 调用 


HttpSolrServer solrServer =SolrServer.getInstance().getServer();
		solrServer.setRequestWriter(new BinaryRequestWriter()); 
		SolrQuery sQuery = new SolrQuery();
		ModifiableSolrParams params=new ModifiableSolrParams();
		params.set("qt", "/suggest");//spellhandler
		params.set("q",content);
		///CommonParams.QT 条件命名
		params.set("spellcheck", "on");  
        params.set("spellcheck.build", "true");  
		
        params.set("spellcheck.count", "10");  
        //params.set("spellcheck.alternativeTermCount", "4");  
       // params.set("spellcheck.onlyMorePopular", "false");
        
        //params.set("spellcheck.extendedResults", "false");  
       // params.set("spellcheck.maxResultsForSuggest", "5");  
  
        //params.set("spellcheck.collate", "true");  
       // params.set("spellcheck.collateExtendedResults", "true");  
        //params.set("spellcheck.maxCollationTries", "5");  
        //params.set("spellcheck.maxCollations", "3");
        
		sQuery.add(params);
		try {
			
			// 第一种方式 获得 entitylist 
			QueryResponse response = solrServer.query(sQuery);
			SpellCheckResponse spellCheckResponse = response.getSpellCheckResponse();
			if(spellCheckResponse != null){
				List<Suggestion> suggestionList=spellCheckResponse.getSuggestions();
				for(Suggestion suggestion:suggestionList){
					if(suggestion.getNumFound()!=0){
						List<String> suggestWordList=suggestion.getAlternatives();
						JsonMapper jsonMapper=JsonMapper.awalysMapper();
						String json = jsonMapper.toJson(suggestWordList);
						
						HttpServletResponse response1=ServletActionContext.getResponse();
						response1.setContentType("text/plain");
						response1.setCharacterEncoding("UTF-8");
						PrintWriter out=response1.getWriter();
						out.print(json);
						out.flush();
						out.close();
						break;
					}
				}
			}

List<Suggestion> suggestionList=spellCheckResponse.getSuggestions(); 没有任何 suggestion返回 。。

怎么办 ,求教


如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

顾挽 2021-12-02 09:18:49

可以用这个方法,queryResponse.getSuggestion()

终陌 2021-12-02 07:55:55

你好,这个问题解决了吗?

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文