solr6.4.2配置suggest模块

看到网上配置suggest模块的文章也不上,大部分都差不多,但是自己配起来就是查询不到,后来阴差阳错在一个qq群里看到一哥们配置的,把我的稍微改了一下就可以了……
manage-schema.xml文件配置:
<field name="suggestion" type="text_pinyin" indexed="true" stored="true" termVectors="true" multiValued="true"></field>
<field name="title" type="text_pinyin" indexed="true" stored="true" />
<copyField source="title" dest="suggestion"/>
test_pinyin类型是我配置的拼音搜索字段,

solrConfig.xml配置文件suggest配置如下:

配置好后,打开solr admin页面进行搜索, 搜索结果:


可以自动提示与x相关的索引词。
在solrj中关于suggest的取值如下:
public List<String> queryAll(String htmlWord){
htmlWord = escapeQueryChars(htmlWord);
//获得查询对象
SolrQuery query =new SolrQuery();
query.set("qt", "/suggest");
query.setQuery(htmlWord);
query.set("sort","score desc");;
query.setStart(0);
query.setRows(5);
//获得客户端对象
cloudSolrClient = getCloudSolrClient(ZKHOST_URL);
final String defaultCollection = "autocomplete";
final int zkClientTimeout = 200000;
final int zkConnectTimeout = 10000;
//设置查询的集合
cloudSolrClient.setDefaultCollection(defaultCollection);
cloudSolrClient.setZkClientTimeout(zkClientTimeout);
cloudSolrClient.setZkConnectTimeout(zkConnectTimeout);
cloudSolrClient.connect();
//查询返回对象
QueryResponse queryRes = new QueryResponse();
List<String> keyWord =new ArrayList<String>();
try {
//返回的索引数据
queryRes = cloudSolrClient.query(query);
NamedList<Object> nameRes =queryRes.getResponse();
SuggesterResponse suggesterRes = queryRes.getSuggesterResponse();
if(suggesterRes!=null){
Map<String, List<String>> suggestedTerms = suggesterRes.getSuggestedTerms();
List<String> terms = suggestedTerms.get("suggest");
for (String term : terms) {
keyWord.add(term);
}
}
}catch (SolrServerException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}finally{
cloudSolrClient = null;
}
return keyWord;
}

其中escapeQueryChars()是去除特殊字符的一个函数,可以不用管,getCloudSolrClient()是写的一个获取客户端的单例方法,可以直接拿,走了很多弯路主要是现在网上的资源很多都是复制粘贴没有参考性,在配置suggest模块时,把 suggest与spellcheck配置混了导致一直配置不成功。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值