我正在使用SOLR建议器组件,但我无法解决如何阻止它在空格上拆分并为每个单词返回多个建议。
我想发出一个命令: http://localhost:8983/solr/suggest?q=“记忆泄漏”
并让它搜索我的搜索字段(使用KeywordTokenizerFactory创建,而不是StandardTokenizerFactory)来搜索整个短语。
我肯定只是在这里愚蠢?
答案 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"/>