最近在搞公司的全文搜索服务,本地搭建了 es 环境,做了些简单的测试,发现些问题。
es version: 6.5.1 中文分词器: ik_smart
在搜索的时候发现两个问题:
- 使用 Java api 搜索, 返回的 SearchHit 里面的 _score 全部是 0.0
- 搜索同一个关键词, 不添加额外排序规则, 只使用默认排序, Java api 和 http api 返回的数据顺序不一致
Java 代码大致如下:
BoolQueryBuilder query = QueryBuilders.boolQuery();
query.filter(QueryBuilders.matchQuery("content", "我们"));
SearchRequestBuilder requestBuilder = esClient.prepareSearch(INDEX_NAME)
.setTypes(INDEX_TYPE)
.setQuery(query);
SearchResponse response = requestBuilder.get();
response.getHits().forEach(hit -> System.out.println(hit.getScore() + " -> " + hit.getSourceAsString()));
希望有 es 经验的朋友指点一下?
