SOLR - Авто Предлагать Фразы - PullRequest
       5

SOLR - Авто Предлагать Фразы

3 голосов
/ 14 октября 2011

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

Я хочу выполнить команду: http://localhost:8983/solr/suggest?q="memory leak "

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

Я, конечно, просто тупой здесь?

Ответы [ 2 ]

3 голосов
/ 24 января 2012

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

} 
0 голосов
/ 17 февраля 2015

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

<queryConverter name="queryConverter" class="org.apache.solr.spelling.SuggestQueryConverter"/>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...