diff options
Diffstat (limited to 'juick-server-jdbc/src/main/java/com/juick/service')
-rw-r--r-- | juick-server-jdbc/src/main/java/com/juick/service/FTSSearchServiceImpl.java (renamed from juick-server-jdbc/src/main/java/com/juick/service/search/SphinxSearchServiceImpl.java) | 47 | ||||
-rw-r--r-- | juick-server-jdbc/src/main/java/com/juick/service/MessagesServiceImpl.java | 1 |
2 files changed, 15 insertions, 33 deletions
diff --git a/juick-server-jdbc/src/main/java/com/juick/service/search/SphinxSearchServiceImpl.java b/juick-server-jdbc/src/main/java/com/juick/service/FTSSearchServiceImpl.java index e4287502..8d2ffbdb 100644 --- a/juick-server-jdbc/src/main/java/com/juick/service/search/SphinxSearchServiceImpl.java +++ b/juick-server-jdbc/src/main/java/com/juick/service/FTSSearchServiceImpl.java @@ -15,15 +15,13 @@ * along with this program. If not, see <http://www.gnu.org/licenses/>. */ -package com.juick.service.search; +package com.juick.service; import org.apache.commons.lang3.StringUtils; -import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.jdbc.core.namedparam.MapSqlParameterSource; -import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate; -import org.springframework.util.Assert; +import org.springframework.stereotype.Repository; +import org.springframework.transaction.annotation.Transactional; -import javax.sql.DataSource; import java.util.Collections; import java.util.List; @@ -31,28 +29,13 @@ import java.util.List; * Created by aalexeev on 11/18/16. */ -/* Note - * Don't use any spring's component annotation (such as @Repository, @Service, @Component, etc). - * This class directly used by spring's search configuration class - */ -public class SphinxSearchServiceImpl implements SearchService { - private static final int DEFAULT_MAX_RESULT = 25; - - private final NamedParameterJdbcTemplate namedParameterSearchJdbcTemplate; +@Repository +@Transactional(readOnly = true) +public class FTSSearchServiceImpl extends BaseJdbcService implements SearchService { + private static final int DEFAULT_MAX_RESULT = 20; private int maxResult = DEFAULT_MAX_RESULT; - - public SphinxSearchServiceImpl(JdbcTemplate searchJdbcTemplate) { - Assert.notNull(searchJdbcTemplate, "JdbcTemplate must be initialized"); - this.namedParameterSearchJdbcTemplate = new NamedParameterJdbcTemplate(searchJdbcTemplate); - } - - public SphinxSearchServiceImpl(DataSource searchDataSource) { - Assert.notNull(searchDataSource, "DataSource must be initialized"); - this.namedParameterSearchJdbcTemplate = new NamedParameterJdbcTemplate(searchDataSource); - } - @Override public List<Integer> searchInAllMessages(final String searchString, final int messageIdBefore) { if (StringUtils.isBlank(searchString)) @@ -63,11 +46,11 @@ public class SphinxSearchServiceImpl implements SearchService { .addValue("before", messageIdBefore) .addValue("limit", maxResult); - return namedParameterSearchJdbcTemplate.queryForList( - "SELECT id AS message_id FROM messages WHERE MATCH(:search) " + + return getNamedParameterJdbcTemplate().queryForList( + "SELECT message_id FROM messages_txt WHERE MATCH(txt) AGAINST(:search) " + (messageIdBefore > 0 ? - " AND id < :before " : StringUtils.EMPTY) + - " ORDER BY id DESC LIMIT :limit", + " AND message_id < :before " : StringUtils.EMPTY) + + " ORDER BY message_id DESC LIMIT :limit", sqlParameterSource, Integer.class); } @@ -83,11 +66,11 @@ public class SphinxSearchServiceImpl implements SearchService { .addValue("before", messageIdBefore) .addValue("limit", maxResult); - return namedParameterSearchJdbcTemplate.queryForList( - "SELECT id AS message_id FROM messages WHERE user_id = :userId AND MATCH(:search) " + + return getNamedParameterJdbcTemplate().queryForList( + "SELECT messages.message_id AS message_id FROM messages INNER JOIN messages_txt ON messages_txt.message_id=messages.message_id WHERE messages.user_id = :userId AND MATCH(messages_txt.txt) AGAINST (:search) " + (messageIdBefore > 0 ? - " AND id < :before " : StringUtils.EMPTY) + - " ORDER BY id DESC LIMIT :limit", + " AND messages.message_id < :before " : StringUtils.EMPTY) + + " ORDER BY messages.message_id DESC LIMIT :limit", sqlParameterSource, Integer.class); } diff --git a/juick-server-jdbc/src/main/java/com/juick/service/MessagesServiceImpl.java b/juick-server-jdbc/src/main/java/com/juick/service/MessagesServiceImpl.java index 4398259c..31731466 100644 --- a/juick-server-jdbc/src/main/java/com/juick/service/MessagesServiceImpl.java +++ b/juick-server-jdbc/src/main/java/com/juick/service/MessagesServiceImpl.java @@ -22,7 +22,6 @@ import com.juick.Tag; import com.juick.User; import com.juick.server.helpers.PrivacyOpts; import com.juick.server.helpers.ResponseReply; -import com.juick.service.search.SearchService; import com.juick.util.MessageUtils; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.StringUtils; |