From 36f0ced4b46a1823a15d3e33e664891c92618b78 Mon Sep 17 00:00:00 2001 From: Alexander Alexeev Date: Fri, 18 Nov 2016 01:30:39 +0700 Subject: search service for full text search implementation; search bean configuration --- .../com/juick/service/MessagesServiceImpl.java | 45 ++++++---------------- 1 file changed, 12 insertions(+), 33 deletions(-) (limited to 'juick-server/src/main/java/com/juick/service/MessagesServiceImpl.java') diff --git a/juick-server/src/main/java/com/juick/service/MessagesServiceImpl.java b/juick-server/src/main/java/com/juick/service/MessagesServiceImpl.java index 6fc71ac3..6f33bbf3 100644 --- a/juick-server/src/main/java/com/juick/service/MessagesServiceImpl.java +++ b/juick-server/src/main/java/com/juick/service/MessagesServiceImpl.java @@ -4,6 +4,7 @@ import com.juick.Message; import com.juick.Tag; import com.juick.User; import com.juick.server.helpers.PrivacyOpts; +import com.juick.service.search.SearchService; import com.juick.util.MessageUtils; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.StringEscapeUtils; @@ -30,13 +31,17 @@ import java.util.*; @Repository public class MessagesServiceImpl extends BaseJdbcService implements MessagesService { private final UserService userService; + private final SearchService searchService; @Inject - public MessagesServiceImpl(JdbcTemplate jdbcTemplate, UserService userService) { + public MessagesServiceImpl(JdbcTemplate jdbcTemplate, UserService userService, SearchService searchService) { super(jdbcTemplate, null); Assert.notNull(userService); this.userService = userService; + + Assert.notNull(searchService); + this.searchService = searchService; } private class MessageMapper implements RowMapper { @@ -576,26 +581,14 @@ public class MessagesServiceImpl extends BaseJdbcService implements MessagesServ @Transactional(readOnly = true) @Override - public List getSearch(final JdbcTemplate sqlSearch, final String search, final int before) { - List mids; - - if (before > 0) { - mids = sqlSearch.queryForList( - "SELECT id AS message_id FROM messages WHERE MATCH(?) AND id < ? ORDER BY id DESC LIMIT 25", - Integer.class, - search, before); - } else { - mids = sqlSearch.queryForList( - "SELECT id AS message_id FROM messages WHERE MATCH(?) ORDER BY id DESC LIMIT 25", - Integer.class, - search); - } - if (mids.size() > 0) { + public List getSearch(final String search, final int before) { + List mids = searchService.getMessageIdsInAllMessages(search, before); + + if (!mids.isEmpty()) return getNamedParameterJdbcTemplate().queryForList( "SELECT message_id FROM messages WHERE message_id IN (:ids) AND privacy > 0 ORDER BY message_id DESC LIMIT 20", new MapSqlParameterSource("ids", mids), Integer.class); - } return mids; } @@ -672,23 +665,9 @@ public class MessagesServiceImpl extends BaseJdbcService implements MessagesServ @Transactional(readOnly = true) @Override public List getUserSearch(final JdbcTemplate sqlSearch, final int UID, final String search, final int privacy, final int before) { - List mids; - - if (before > 0) { - mids = sqlSearch.queryForList( - "SELECT id AS message_id FROM messages WHERE user_id=? AND MATCH(?) AND id mids = searchService.getMessageIdsByUser(search, UID, before); - if (mids.size() > 0) { + if (!mids.isEmpty()) { return getNamedParameterJdbcTemplate().queryForList( "SELECT message_id FROM messages WHERE message_id IN (:ids) AND privacy >= :privacy ORDER BY message_id DESC", new MapSqlParameterSource("ids", mids) -- cgit v1.2.3