【问题标题】:SOLR - Auto Suggest PhrasesSOLR - 自动建议短语
【发布时间】:2011-10-14 10:51:35
【问题描述】:

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

我想发出一个命令: http://localhost:8983/solr/suggest?q="内存泄漏"

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

我肯定只是在这里愚蠢吗?

【问题讨论】:

    标签: solr autosuggest


    【解决方案1】:

    看看这个线程: 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; 
      } 
    
    } 
    

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-09-25
        相关资源
        最近更新 更多