2014-09-19 1 views
3

Я работаю над приложением, где у нас есть разные типы поисков. Некоторые из них представляют собой поиск полного текста по нескольким столбцам в базе данных MYSQL, и я использую Hibernate Search (который использует lucene внутри) для этих.Когда использовать Lucene/Hibernate Search

Теперь мой вопрос Что делать в случае простых запросов базы данных, которые не полный поиск text.A формы:

select * from table1,table2 where table1.col1='testval' and table1.col2=table2.col2; 

Будет ли такой поиск будет лучше, если я использовать спящий режим поиска или будет ли не влияет на производительность, так как это не полный текстовый поиск

+0

Возможно, вы, вероятно, должны переписать этот SQL-запрос как 'join'. –

+0

Любые причины для downvote? –

+1

Есть целая нагрузка глупого downvoting, который идет вокруг здесь по вполне разумным вопросам. Не так много вы можете сделать, кроме как игнорировать его. Я поднимаю этот вопрос, чтобы отменить глупость. –

ответ

4

Вы, безусловно, получите повышение производительности с помощью поиска Lucene/Hibernate. Причина в том, что он будет поддерживать индекс локально, а затем использовать его для поиска, вместо того, чтобы запрашивать базу данных для получения результатов, поэтому это уменьшит ваш сетевой трафик и уменьшит нагрузку на базу данных.

Конечно, для простого приложения с сетью и базой данных под легкой нагрузкой вы не будете обязательно замечать какую-либо разницу, но когда все начнет увеличиваться, вы заметите. Чем больше вы можете сделать, чтобы избежать ненужных запросов к базе данных, тем лучше.

+0

Итак, если мы планируем масштабировать приложение, предположим, около миллиона пользователей, с активными поисками, вы бы посоветовали сделать все поиски Hibernate/Lucene, поскольку это даст нам преимущество в производительности. –

+0

@AbhishekRanjan Yup. –