2009-01-04 75 views
7

假設我有一個包含許多名稱的數據庫表。我想對這些名字進行「彈性匹配」。我不確定「彈性匹配」是否適合使用,但現在就讓我們繼續。關於「模糊匹配」,已經有similardiscussions,但我對語音匹配沒有真正的興趣。我對我所謂的有序子集匹配感興趣。Flex匹配許多數據庫記錄(類似Quicksilver或Launchy的匹配)

我希望它能像QuickSilver(OSX)或Launchy(Windows)一樣工作。以下是比賽的一個給定的搜索字符串的幾個例子:

MIT中號 assachusetts nstitute的牛逼李有成
ffox˚F憤怒狐狸
osx⇒Mac OS X
毫秒中號 ICRO 小號經常總公司

我的最終目標是擁有一個網頁與服務器驅動的數據自動完成文本字段。

我相信通過結合jQuery LiveUpdate和/或jQuery QuickSelect的功能,我可以在客戶端獲得足夠的結果。

我需要幫助的是如何最好地處理服務器端對大表的彈性匹配。我對如何使用Quicksilver scoringalgorithm以及一些置換索引邏輯來構建我自己的自定義索引有一些想法,但我寧願不重新發明輪子,如果有其他可用的話。

總結:什麼是獲得與多行數據庫錶快速彈性匹配的最佳方法是什麼?

回答

4

這並沒有直接回答我的問題,但這個項目我的工作,我意識到,我只是沒有需要這個尚未服務器端組件。爲了方便我的web應用程序的客戶端,我剛剛推出了兩個新的開源項目:

  • LiquidMetal:這是一個水銀般的得分算法,對分數的縮寫字符串。建立索引時很有用。
  • Flexselect:一個jQuery插件,可以將選擇框轉換爲彈性匹配增量發現控件。把它想象成Quicksilver散佈在一個選擇框中。它使用LiquidMetal來過濾和排序實時結果。
+0

+1。 – 2010-05-12 04:54:34

1

一種方法是隻做LIKE匹配。在每個字符之間插入一個%,然後在字符串之前和之後放入一個%,然後根據該字符進行搜索。很顯然,這會拉ms像'm ultimedia s ystems',但你可能可以將它與另一個包含'建議'匹配的表,並按這些排序。

+0

是的,我給出了一些想法,但它肯定不適合大型桌子。這將需要全表掃描。它也沒有評分結果。單詞的連續字符和首字母應該高於隨機子集。對於Flexselect,爲 – 2009-01-06 02:11:46