簡體   English   中英

如何快速獲得閃電般的搜索?

[英]How do I get this lightning fast search?

我剛來到這個網站: http : //www.hittaplagget.se 如果輸入以下搜索詞moo ,則自動彈出自動提示。

但是,如果您訪問我的網站http://storelocator.no ,並使用相同的搜索短語(在“搜索品牌”字段中),則自動建議的時間會更長。

我知道我們只能猜測他們使用的是哪種技術,但是希望這里的人能比我做得更好。

在我的解決方案中,我只執行SELECT moo% FROM table並返回結果。 我還沒有索引我的表,因為它只有7000行。 但是我正在考慮使用Lucene為我的表建立索引。

誰能建議我需要做些什么才能獲得同樣快速的自動建議?

您必須在保存搜索詞的列上添加索引,即使是7000也是如此-否則,數據庫每次都會搜索整個列表。 參見http://dev.mysql.com/doc/refman/5.0/en/create-index.html

Lucene是全文搜索索引,可能不是您要找的內容。 Lucene會在整個索引列中找到任何出現的“ moo”(例如Mootastic和Fantasticmoo),盡管它比x類似於'%moo%'類型的搜索要快,但不一定能加快搜索速度。

正如其他人已經指出的那樣,如果要執行“開始於”類型的搜索,則需要使用常規索引(甚至可能是唯一索引)。

您將需要對表進行表掃描,因此我建議:

  • 不要在不需要的表中放置任何行-例如,“非活動”記錄-將它們保留在其他表中
  • 不要在不需要的表中放置任何列
  • 您可以通過使用一個特殊的“搜索表”(僅包含您感興趣的行/列)並從“主表”對其進行更新來實現此目的。

如果行很小,則對7000行表進行表掃描應該非常有效; 我從您的問題域了解到情況將會如此。

但正如其他人指出的那樣-不要在不需要時將7000行發送到客戶端。

常規索引可以將LIKE'someprefix%'優化為范圍掃描,因此擁有一個索引可能會有所幫助。 如果要在條目的任何部分中搜索字符串,則將使用表掃描(在如此小的表上這樣做應該不會太慢!)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM