SOLR — автоподсказка фраз

Я использую компонент подсказки SOLR, но не могу понять, как остановить его разбиение на пробелы и возврат нескольких предложений для каждого слова.

Я хочу ввести команду: http://localhost:8983/solr/suggest?q="утечка памяти"

и заставить его искать в моем поле поиска (созданном с помощью KeywordTokenizerFactory, а не StandardTokenizerFactory) всю фразу.

Я тут точно тупой?


person Kram    schedule 14.10.2011    source источник


Ответы (2)


Взгляните на эту тему: 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; 
  } 

} 
person tommy chheng    schedule 24.01.2012

В более поздних версиях solr (у нас 4.6.1) нужно просто добавить в solrconfig.xml следующее:

<queryConverter name="queryConverter" class="org.apache.solr.spelling.SuggestQueryConverter"/>
person Simon    schedule 17.02.2015