Toggle navigation
Toggle navigation
This project
Loading...
Sign in
yoho-search
/
yoho-search-service
·
Commits
Go to a project
GitLab
Go to group
Project
Activity
Files
Commits
Pipelines
0
Builds
0
Graphs
Milestones
Issues
0
Merge Requests
0
Members
Labels
Wiki
Forks
Network
Create a new issue
Download as
Email Patches
Plain Diff
Browse Files
Authored by
hugufei
6 years ago
Commit
31f9aa584a33faadcde3eb64312cb3607bd685ce
1 parent
2614178b
添加filterQuery,过滤商品名称,只过滤,不打分
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
42 additions
and
22 deletions
service/src/main/java/com/yoho/search/common/BaseSceneService.java
service/src/main/java/com/yoho/search/common/SearchRequestParams.java
service/src/main/java/com/yoho/search/common/utils/SearchKeyWordUtils.java
service/src/main/java/com/yoho/search/restapi/tools/RecallResultController.java
service/src/main/java/com/yoho/search/restapi/tools/SearchParamsTest.java
service/src/main/java/com/yoho/search/service/helper/SearchQueryHelper.java
service/src/main/java/com/yoho/search/common/BaseSceneService.java
View file @
31f9aa5
...
...
@@ -32,7 +32,7 @@ public class BaseSceneService {
String
keyword
=
SearchKeyWordUtils
.
getParamKeyword
(
paramMap
,
SearchRequestParams
.
PARAM_SEARCH_QUERY
);
// 转码
if
(!
StringUtils
.
isBlank
(
keyword
))
{
paramMap
.
put
(
SearchRequestParams
.
PARAM_SEARCH_QUERY
,
keyword
);
paramMap
.
put
(
"is_encode"
,
"0"
);
paramMap
.
put
(
SearchRequestParams
.
PARAM_SEARCH_IS_ENCODE
,
"0"
);
}
}
...
...
service/src/main/java/com/yoho/search/common/SearchRequestParams.java
View file @
31f9aa5
...
...
@@ -9,6 +9,10 @@ public class SearchRequestParams {
public
static
final
String
PARAM_SEARCH_VIEWNUM
=
"viewNum"
;
// 数量
public
static
final
String
PARAM_SEARCH_QUERY
=
"query"
;
// 检索关键词
public
static
final
String
PARAM_SEARCH_FILTER_QUERY
=
"filterQuery"
;
// 过滤关键词,不打分
public
static
final
String
PARAM_SEARCH_IS_ENCODE
=
"is_encode"
;
// 检索关键词
public
static
final
String
PARAM_SEARCH_SHOPS_KEYWORD
=
"keyword"
;
// 店铺检索词
public
static
final
String
PARAM_SEARCH_GENDER
=
"gender"
;
// 性别ids[1,2,3]
...
...
service/src/main/java/com/yoho/search/common/utils/SearchKeyWordUtils.java
View file @
31f9aa5
package
com
.
yoho
.
search
.
common
.
utils
;
import
com.yoho.search.common.SearchRequestParams
;
import
org.apache.commons.lang.StringUtils
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
...
...
@@ -35,6 +36,21 @@ public class SearchKeyWordUtils {
return
keyword
;
}
public
static
String
getFilterQueryWord
(
Map
<
String
,
String
>
paramMap
)
{
String
keyword
=
paramMap
.
get
(
SearchRequestParams
.
PARAM_SEARCH_FILTER_QUERY
);
if
(
StringUtils
.
isBlank
(
keyword
))
{
return
null
;
}
// 强制编码转换
try
{
keyword
=
URLDecoder
.
decode
(
keyword
,
StandardCharsets
.
UTF_8
.
name
());
}
catch
(
Exception
e
)
{
logger
.
warn
(
e
.
getMessage
(),
e
);
}
keyword
=
keyword
.
toLowerCase
();
return
keyword
;
}
public
static
String
getUfoParamKeyword
(
Map
<
String
,
String
>
paramMap
,
String
keywordParam
)
{
String
keyword
=
paramMap
.
get
(
keywordParam
);
if
(
StringUtils
.
isBlank
(
keyword
))
{
...
...
service/src/main/java/com/yoho/search/restapi/tools/RecallResultController.java
View file @
31f9aa5
...
...
@@ -176,7 +176,7 @@ public class RecallResultController {
String
keyword
=
SearchKeyWordUtils
.
getParamKeyword
(
paramMap
,
SearchRequestParams
.
PARAM_SEARCH_QUERY
);
// 转码
if
(!
StringUtils
.
isBlank
(
keyword
))
{
paramMap
.
put
(
SearchRequestParams
.
PARAM_SEARCH_QUERY
,
keyword
);
paramMap
.
put
(
"is_encode"
,
"0"
);
paramMap
.
put
(
SearchRequestParams
.
PARAM_SEARCH_IS_ENCODE
,
"0"
);
}
}
...
...
service/src/main/java/com/yoho/search/restapi/tools/SearchParamsTest.java
View file @
31f9aa5
package
com
.
yoho
.
search
.
restapi
.
tools
;
import
com.yoho.search.base.utils.ProductIndexEsField
;
import
com.yoho.search.core.es.model.SearchField
;
import
com.yoho.search.core.es.model.SearchParam
;
import
com.yoho.search.core.es.utils.SearchParamUtils
;
import
org.elasticsearch.common.lucene.search.function.FiltersFunctionScoreQuery
;
import
org.elasticsearch.index.query.BoolQueryBuilder
;
import
org.elasticsearch.index.query.MultiMatchQueryBuilder
;
import
org.elasticsearch.index.query.QueryBuilders
;
import
org.elasticsearch.index.query.functionscore.FunctionScoreQueryBuilder
;
import
org.elasticsearch.index.query.functionscore.ScoreFunctionBuilders
;
import
org.elasticsearch.search.sort.SortBuilders
;
import
org.elasticsearch.search.sort.SortOrder
;
...
...
@@ -17,25 +15,13 @@ public class SearchParamsTest {
public
static
void
main
(
String
[]
args
)
{
SearchParam
searchParam
=
new
SearchParam
();
BoolQueryBuilder
queryBuilder
=
QueryBuilders
.
boolQuery
();
MultiMatchQueryBuilder
multiMatchQueryBuilder
=
QueryBuilders
.
multiMatchQuery
(
"air ma"
);
multiMatchQueryBuilder
.
field
(
"productName_ik"
,
1000
);
MultiMatchQueryBuilder
multiMatchQueryBuilder
=
QueryBuilders
.
multiMatchQuery
(
"刺绣卫衣"
);
multiMatchQueryBuilder
.
field
(
ProductIndexEsField
.
smallSort
,
1000
);
multiMatchQueryBuilder
.
field
(
ProductIndexEsField
.
productName_productName_ansj
,
300
);
multiMatchQueryBuilder
.
minimumShouldMatch
(
"100%"
);
queryBuilder
.
should
(
multiMatchQueryBuilder
);
searchParam
.
setQuery
(
multiMatchQueryBuilder
);
BoolQueryBuilder
wildcardQuery
=
new
BoolQueryBuilder
();
wildcardQuery
.
must
(
QueryBuilders
.
wildcardQuery
(
"productName.productName_ik"
,
"*air*"
));
wildcardQuery
.
must
(
QueryBuilders
.
wildcardQuery
(
"productName.productName_ik"
,
"*ma*"
));
queryBuilder
.
should
(
wildcardQuery
);
FunctionScoreQueryBuilder
.
FilterFunctionBuilder
[]
filters
=
new
FunctionScoreQueryBuilder
.
FilterFunctionBuilder
[
2
];
filters
[
0
]
=
new
FunctionScoreQueryBuilder
.
FilterFunctionBuilder
(
multiMatchQueryBuilder
,
ScoreFunctionBuilders
.
weightFactorFunction
(
100
));
filters
[
1
]
=
new
FunctionScoreQueryBuilder
.
FilterFunctionBuilder
(
multiMatchQueryBuilder
,
ScoreFunctionBuilders
.
weightFactorFunction
(
1
));
FunctionScoreQueryBuilder
functionScoreQueryBuilder
=
new
FunctionScoreQueryBuilder
(
queryBuilder
,
filters
);
functionScoreQueryBuilder
.
scoreMode
(
FiltersFunctionScoreQuery
.
ScoreMode
.
MAX
);
searchParam
.
setQuery
(
functionScoreQueryBuilder
);
searchParam
.
setSize
(
100
);
searchParam
.
setSortBuilders
(
Arrays
.
asList
(
SortBuilders
.
scoreSort
().
order
(
SortOrder
.
DESC
)));
System
.
out
.
println
(
SearchParamUtils
.
genSearchSourceBuilderFromSearchParam
(
searchParam
));
...
...
service/src/main/java/com/yoho/search/service/helper/SearchQueryHelper.java
View file @
31f9aa5
...
...
@@ -394,6 +394,20 @@ public class SearchQueryHelper {
boolFilter
.
must
(
marketPromotionFilter
);
}
//关键词过滤-只过滤不打分
String
filterQuery
=
SearchKeyWordUtils
.
getFilterQueryWord
(
paramMap
);
if
(
StringUtils
.
isNotBlank
(
filterQuery
))
{
MultiMatchQueryBuilder
filterQueryBuilder
=
QueryBuilders
.
multiMatchQuery
(
filterQuery
);
List
<
SearchField
>
searchFields
=
SearchFieldUtils
.
getFilterQueryFields
();
for
(
SearchField
searchField
:
searchFields
)
{
filterQueryBuilder
.
field
(
searchField
.
getEsField
(),
searchField
.
getBoost
());
}
filterQueryBuilder
.
minimumShouldMatch
(
"100%"
);
filterQueryBuilder
.
type
(
MultiMatchQueryBuilder
.
Type
.
CROSS_FIELDS
);
filterQueryBuilder
.
operator
(
Operator
.
OR
);
boolFilter
.
must
(
filterQueryBuilder
);
}
if
(
boolFilter
.
hasClauses
())
{
return
boolFilter
;
}
else
{
...
...
Please
register
or
login
to post a comment