|
@@ -26,13 +26,13 @@ import static org.elasticsearch.index.query.QueryBuilders.*;
|
|
|
@Slf4j
|
|
|
@Service(SearchV8SimpServiceImpl.index)
|
|
|
@AllArgsConstructor
|
|
|
-public class SearchV8SimpServiceImpl implements SearchService {
|
|
|
+public class SearchV8SimpServiceImpl implements SearchService {
|
|
|
private SearchDao searchDao;
|
|
|
|
|
|
public static final String index = "winhc-company-v8-simp";
|
|
|
public static final String type = "company";
|
|
|
|
|
|
- private static final String[] includes_tips = new String[]{"cname.show","new_cid"};
|
|
|
+ private static final String[] includes_tips = new String[]{"cname.show", "new_cid"};
|
|
|
private static final FetchSourceContext fetchSourceContext_tips = new FetchSourceContext(true, includes_tips, null);
|
|
|
|
|
|
|
|
@@ -69,16 +69,14 @@ public class SearchV8SimpServiceImpl implements SearchService {
|
|
|
|
|
|
private BoolQueryBuilder getBoolQuery(String content) {
|
|
|
BoolQueryBuilder boolQuery = QueryBuilders.boolQuery();
|
|
|
- MultiMatchQueryBuilder multiMatchQueryBuilder = multiMatchQuery(content)
|
|
|
- .operator(Operator.AND)
|
|
|
- .type(MultiMatchQueryBuilder.Type.CROSS_FIELDS)
|
|
|
- .minimumShouldMatch("5<80%")
|
|
|
- .tieBreaker(0.3F);
|
|
|
|
|
|
+ // 公司现用名*100
|
|
|
boolQuery.should(termQuery("cname.value.keyword", content).boost(100));
|
|
|
+ // 公司曾用名*100
|
|
|
boolQuery.should(termQuery("history_name.value.keyword", content).boost(100));
|
|
|
|
|
|
|
|
|
+ // 0.7* max(商标全匹配*20,产品全匹配*40) + 0.3 * sum(商标全匹配*20,产品全匹配*40)
|
|
|
boolQuery.should(disMaxQuery().add(
|
|
|
QueryBuilders.boolQuery()
|
|
|
.should(termQuery("app_info.keyword", content).boost(40))
|
|
@@ -86,6 +84,7 @@ public class SearchV8SimpServiceImpl implements SearchService {
|
|
|
).tieBreaker(0.3F)
|
|
|
);
|
|
|
|
|
|
+ // 0.6* max(商标*5,产品信息*15,商标全匹配*20,产品全匹配*40) + 0.4 * sum(商标*5,产品信息*15,商标全匹配*20,产品全匹配*40)
|
|
|
boolQuery.should(disMaxQuery().add(
|
|
|
QueryBuilders.boolQuery()
|
|
|
|
|
@@ -94,11 +93,17 @@ public class SearchV8SimpServiceImpl implements SearchService {
|
|
|
|
|
|
.should(termQuery("app_info.keyword", content).boost(40))
|
|
|
.should(termQuery("company_tm.keyword", content).boost(20))
|
|
|
+ // 加入最小匹配度
|
|
|
.minimumShouldMatch("5<80%")
|
|
|
).tieBreaker(0.4F)
|
|
|
);
|
|
|
|
|
|
-
|
|
|
+ MultiMatchQueryBuilder multiMatchQueryBuilder = multiMatchQuery(content)
|
|
|
+ .operator(Operator.AND)
|
|
|
+ .type(MultiMatchQueryBuilder.Type.CROSS_FIELDS)
|
|
|
+ .minimumShouldMatch("5<80%")
|
|
|
+ .tieBreaker(0.3F);
|
|
|
+ //公司现用名*16+曾用名*12
|
|
|
multiMatchQueryBuilder
|
|
|
.field("cname.value", 16)
|
|
|
.field("history_name.value", 12)
|
|
@@ -106,6 +111,7 @@ public class SearchV8SimpServiceImpl implements SearchService {
|
|
|
|
|
|
boolQuery.should(multiMatchQueryBuilder);
|
|
|
BoolQueryBuilder boolQuery2 = QueryBuilders.boolQuery();
|
|
|
+ // 过deleted非0数据
|
|
|
boolQuery2.filter(QueryBuilders.termQuery("deleted", "0"));
|
|
|
boolQuery2.must(boolQuery);
|
|
|
return boolQuery2;
|