diff --git a/src/main/java/site/campingon/campingon/camp/repository/mongodb/MongoSearchClient.java b/src/main/java/site/campingon/campingon/camp/repository/mongodb/MongoSearchClient.java index e54a7097..260e3925 100644 --- a/src/main/java/site/campingon/campingon/camp/repository/mongodb/MongoSearchClient.java +++ b/src/main/java/site/campingon/campingon/camp/repository/mongodb/MongoSearchClient.java @@ -100,20 +100,21 @@ private String createShouldClauses(String searchTerm, List userKeywords) List clauses = new ArrayList<>(); if (StringUtils.hasText(searchTerm)) { - clauses.add("{text: {query: '" + searchTerm + "', path: 'name', score: {boost: {value: 5}}, fuzzy: {maxEdits: 2}}}"); + clauses.add("{text: {query: '" + searchTerm + "', path: 'name', score: {boost: {value: 5}}, fuzzy: {maxEdits: 1}}}"); + clauses.add("{text: {query: '" + searchTerm + "', path: 'name', score: {boost: {value: 4.5}}, fuzzy: {maxEdits: 2}}}"); + clauses.add("{text: {query: '" + searchTerm + "', path: 'hashtags', score: {boost: {value: 4}}, fuzzy: {maxEdits: 1}}}"); clauses.add("{text: {query: '" + searchTerm + "', path: 'address.state', score: {boost: {value: 3}}, fuzzy: {maxEdits: 1}}}"); - clauses.add("{text: {query: '" + searchTerm + "', path: 'address.city', score: {boost: {value: 2}}}}"); - clauses.add("{text: {query: '" + searchTerm + "', path: 'intro', score: {boost: {value: 2}}}}"); - + clauses.add("{text: {query: '" + searchTerm + "', path: 'address.city', score: {boost: {value: 2.5}}}}"); + clauses.add("{text: {query: '" + searchTerm + "', path: 'intro', score: {boost: {value: 2.5}}}}"); - //clauses.add("{regex: {query: '" + searchTerm + "', path: 'name', allowAnalyzedField: true, score: {boost: {value: 3.5}}}}"); + clauses.add("{regex: {query: '" + searchTerm + ".*', path: 'name', allowAnalyzedField: true, score: {boost: {value: 4}}}}"); } if (userKeywords != null && !userKeywords.isEmpty()) { for (String keyword : userKeywords) { if (StringUtils.hasText(keyword)) { - clauses.add("{text: {query: '" + keyword + "', path: 'hashtags', score: {boost: {value: 2.5}}}}"); + clauses.add("{text: {query: '" + keyword + "', path: 'hashtags', score: {boost: {value: 2}}}}"); } } } diff --git a/src/main/java/site/campingon/campingon/camp/service/mongodb/SearchInfoService.java b/src/main/java/site/campingon/campingon/camp/service/mongodb/SearchInfoService.java index 3353b55b..330a4a9e 100644 --- a/src/main/java/site/campingon/campingon/camp/service/mongodb/SearchInfoService.java +++ b/src/main/java/site/campingon/campingon/camp/service/mongodb/SearchInfoService.java @@ -101,7 +101,7 @@ public Page getMatchedCampsByKeywords( // 검색어 자동완성 public List getAutocompleteResults(String word) { - if (!StringUtils.hasText(word) || word.length() < 3) { + if (!StringUtils.hasText(word) || word.length() < 2) { return new ArrayList<>(); } return mongoSearchClient.getAutocompleteResults(word); diff --git a/src/main/java/site/campingon/campingon/common/config/SecurityPath.java b/src/main/java/site/campingon/campingon/common/config/SecurityPath.java index 9aea7a45..d1016f9c 100644 --- a/src/main/java/site/campingon/campingon/common/config/SecurityPath.java +++ b/src/main/java/site/campingon/campingon/common/config/SecurityPath.java @@ -10,6 +10,7 @@ public class SecurityPath { "/api/users/check-duplicate", "/", "/api/mongo/camps/search", + "/api/mongo/camps/autocomplete", "/api/camps/*/available", "/api/camps/*" }; @@ -26,7 +27,10 @@ public class SecurityPath { "/api/logout", "/api/keywords", "/api/keywords/me", - "/api/camps/bookmarked" + "/api/camps/bookmarked", + "/api/camps/reviews/*", + "/api/camps/*/reviews", + "/api/camps/*/reviews/*" }; // hasRole("ADMIN")