2010-05-31 65 views

回答

0

這是你在找什麼?

SELECT username FROM users WHERE username LIKE '%value%'; 
+0

我需要這個這種事情 SELECT * FROM業務WHERE名稱LIKE '基地%' ORDER BY DESC名稱,長度(名); 這是不行的 – mahela 2010-05-31 07:01:55

+0

這個怎麼樣 ? SELECT * FROM'business'WHERE name LIKE'AI%'ORDER BY name DESC,長度(姓名)DESC – ricecake5 2010-05-31 07:47:32

1

如果你要求的全文搜索的結果按相關性排序,然後是有解決方案..但它不是微不足道的。這些是更多的'企業級解決方案:

的Solr - http://lucene.apache.org/solr/

Solr的是Apache Lucene項目的流行,速度極快的開源企業搜索平臺。其主要功能包括強大的全文搜索,點擊高亮顯示,多面搜索,動態羣集,數據庫集成和豐富的文檔(例如Word,PDF)處理。 Solr具有高度的可擴展性,提供分佈式搜索和索引複製功能,並且它支持世界上許多最大的互聯網站點的搜索和導航功能。

獅身人面像 - http://sphinxsearch.com/

一般來說,它是一個獨立的搜索引擎,旨在提供快速,規模效益和相關的全文搜索功能,其他應用程序。 Sphinx專門設計用於與SQL數據庫和腳本語言良好集成。目前內置的數據源支持通過直接連接到MySQL或PostgreSQL來獲取數據,或者使用XML管道機制(一種管道到Sphinx識別的特殊XML格式的索引器)。

在不瞭解系統和限制的情況下,不可能幫助縮小正確的解決方案。

+0

我不是要求全文搜索 – mahela 2010-05-31 06:54:28

+0

您要求最佳匹配,這意味着相關性搜索。 – 2010-05-31 17:05:55

0

按步驟操作:

a。先來看看一個精確匹配(SELECT * FROM業務WHERE名稱= '值'),然後

如果失敗:

灣將搜索字符串拆分爲單詞,對每個單詞運行查詢(將每個單詞的結果添加到數組中,其中鍵是行ID,值是相關性,對於找到的每個單詞將相關性增加1,則可以簡單地排序您的陣列(即最字相一致=最高的相關性)

b是非常inneficient,真的,你應該使用全文(無論是MySQL的內置全文或獅身人面像/ Lucene的等如上所述)

+0

我現在要處理10萬行,未來需要處理超過10萬個。 可以使用相同的fild長度和alpabetical順序做「orderby」嗎? – mahela 2010-06-01 07:53:08

+0

你不能在1000萬行上有效地使用LIKE,爲什麼你不能使用全文? – mononym 2010-06-01 08:47:49