2011-09-23 116 views
1

在我的MySQL數據庫我有一個由37,000(或大約)用戶組成的用戶表。用戶搜索使用MySQL LIKE或集成搜索引擎(如solr,sphinx,lucene等)?

當用戶在網站上搜索另一個用戶時,我執行一個簡單的通配符(即LIKE'{name}%})來返回找到的用戶。

使用搜索引擎這樣的solr來做我的'LIKE'搜索會更有效率和更快嗎?此外?我相信solr我可以使用通配符查詢(http://www.lucidimagination.com/blog/2009/09/08/auto-suggest-from-popular-queries-using-edgengrams/

說實話,目前使用LIKE查詢的速度並不慢,但隨着用戶數量的增長,速度會變慢。任何提示或建議非常感謝。

+0

http://stackoverflow.com/questions/4944174/mysql-full-text-or-sphinx-or-lucene-or-anything-else http://stackoverflow.com/questions/4774227/fulltext-search- with-mysql-ft-or-sphinx http://stackoverflow.com/questions/6820527/lucene-or-mysql-full-text-search –

+0

[全文搜索引擎的優缺點Lucene,Sphinx,Postgresql全文搜索,MySQL全文搜索?](http://stackoverflow.com/questions/737275/pros-cons-of-full-text-search-engine-lucene-sphinx-postgresql-full-text-searc) –

+0

@MauricioScheffer--這些問題不會回答我的問題,因爲它正在搜索單詞。我正在做一個通配符搜索,並想知道它是否存在於各種搜索服務器中,以及它是否比像wilcard這樣的MySQL更高效。 – Flukey

回答

1

我們搞一個類似的情況在一個月前,我們的數據庫大概在33k左右,並且由於我們的引擎是InnoDB,所以我們無法利用MySQL全文搜索功能(它非常直截了當)。

我們決定實施sphinxsearch(http://www.sphinxsearch.com),結果給我留下了深刻的印象(我變得相當「迷戀」了)。

如果我們對所有行的很多列(加載的左連接)進行大型索引搜索,我們實際上將查詢響應時間減半到MySQL'LIKE'對應部分。

雖然我們沒有長期使用它 - 如果您打算爲將來的可用性打造一個獅身人面像。

0

如果搜索詞必須至少有3個字符才能開始搜索,並且索引大小爲3個字符,那麼您可以加快搜索速度。

0

我們使用Solr的用於此目的,因爲你可以在1-2毫秒,即使有索引的文件milions搜索。我們使用Data Import Handler來鏡像我們的mysql實例,然後我們搜索Solr。

爲內維爾指出,全文搜索是內置在MySQL,但Solr的表演方式更好,因爲它的誕生爲全文搜索引擎

+0

Hi Samuele,一段相當長的文字。你有一個簡單的例子你的dataConfig XML文件?謝謝! :-) – Flukey

+0

你應該檢查一下這個例子(http://wiki.apache.org/solr/DataImportHandler#Full_Import_Example),因爲我們剛開始的時候是這樣的:)我們的dataconfig有點複雜,在這裏發佈它是沒用的(它)會基本上選擇你的驅動程序(jdbc:mysql for mysql),配置你想要檢索的字段列表,並用標準的mysql語法配置查詢:) –