SOLR - 自动建议短语

时间:2011-10-14 10:51:35

标签: solr autosuggest

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

我想发出一个命令: http://localhost:8983/solr/suggest?q=“记忆泄漏”

并让它搜索我的搜索字段(使用KeywordTokenizerFactory创建,而不是StandardTokenizerFactory)来搜索整个短语。

我肯定只是在这里愚蠢?

2 个答案:

答案 0 :(得分:3)

看一下这个帖子: http://lucene.472066.n3.nabble.com/suggester-issues-td3262718.html

您可能必须使用如下所示的自定义类来获得您的期望:

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; 
  } 

} 

答案 1 :(得分:0)

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

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