#solr #autosuggest
#solr #автоматическое предложение
Вопрос:
Я использую компонент SOLR suggester, но я не могу понять, как остановить его разделение на пробелы и возврат нескольких предложений для каждого слова.
Я хотел бы выполнить команду: http://localhost:8983/solr/suggest?q =«утечка памяти»
и заставьте его выполнить поиск в моем поле поиска (созданном с использованием KeywordTokenizerFactory, а не StandardTokenizerFactory) для всей фразы.
Я, конечно, просто туплю здесь?
Ответ №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 resu<
}
}
Ответ №2:
В более поздних версиях solr (у нас есть 4.6.1) вам просто нужно добавить следующее в solrconfig.xml:
<queryConverter name="queryConverter" class="org.apache.solr.spelling.SuggestQueryConverter"/>