Solr 自动建议短语

Solr 自动建议短语,solr,autosuggest,Solr,Autosuggest,我正在使用SOLR suggester组件,但我无法解决如何阻止它在空格上拆分并为每个单词返回多个建议 我想发出一个命令: “内存泄漏” 并让它搜索整个短语的我的搜索字段(使用关键字TokenizerFactory而不是StandardTokenizerFactory创建) 我肯定是在这里装傻?看看这个帖子: 您可能需要使用如下自定义类才能获得所需的: import java.util.ArrayList; import java.util.Collection; import java.

我正在使用SOLR suggester组件,但我无法解决如何阻止它在空格上拆分并为每个单词返回多个建议

我想发出一个命令: “内存泄漏”

并让它搜索整个短语的我的搜索字段(使用关键字TokenizerFactory而不是StandardTokenizerFactory创建)


我肯定是在这里装傻?

看看这个帖子:

您可能需要使用如下自定义类才能获得所需的:

import java.util.ArrayList; 
import java.util.Collection; 
import java.util.Collections; 

import org.apache.lucene.analysis.Token; 
import org.apache.solr.spelling.QueryConverter; 

/**                                                                                                                                                                                                                                         
 * Converts the query string to a Collection of Lucene tokens.                                                                                                                                                                             
 **/ 
public class SpellingQueryConverter extends QueryConverter  { 

  /**                                                                                                                                                                                                                                       
   * Converts the original query string to a collection of Lucene Tokens.                                                                                                                                                                 
   * @param original the original query string                                                                                                                                                                                             
   * @return a Collection of Lucene Tokens                                                                                                                                                                                                 
   */ 
  @Override 
  public Collection<Token> convert(String original) { 
    if (original == null) {                                                                                                                                                             
      return Collections.emptyList(); 
    } 
    Collection<Token> result = new ArrayList<Token>(); 
    Token token = new Token(original, 0, original.length(), "word"); 
    result.add(token); 
    return result; 
  } 

} 
import java.util.ArrayList;
导入java.util.Collection;
导入java.util.Collections;
导入org.apache.lucene.analysis.Token;
导入org.apache.solr.spelling.QueryConverter;
/**                                                                                                                                                                                                                                         
*将查询字符串转换为Lucene标记的集合。
**/ 
公共类SpellingQueryConverter扩展了QueryConverter{
/**                                                                                                                                                                                                                                       
*将原始查询字符串转换为Lucene标记的集合。
*@param original原始查询字符串
*@返回一组Lucene代币
*/ 
@凌驾
公共集合转换(字符串原始){
如果(原始==null){
返回集合。emptyList();
} 
收集结果=新建ArrayList();
Token Token=新标记(原始,0,original.length(),“word”);
结果。添加(令牌);
返回结果;
} 
} 

在更高版本的solr(我们有4.6.1)中,您只需在solrconfig.xml中删除以下内容:

<queryConverter name="queryConverter" class="org.apache.solr.spelling.SuggestQueryConverter"/>