我正在開發一個postgreSQL查詢,以便在我正在處理的應用程序中搜索公司名稱時允許使用模糊搜索功能。我發現並一直在使用Postgres的Levenshtein方法(fuzzystrmatch模塊的一部分),並且大部分工作正常。但是,它似乎只工作時,公司的名稱是一個字,例如:PostgreSQL模糊使用Levenshtein搜索多個單詞
與蘋果(它存儲在數據庫中,只是蘋果)我可以運行以下查詢,並使其工作接近完美(它返回0 Levenshtein距離):
SELECT * FROM contents
WHERE levenshtein(company_name, 'apple') < 4;
然而,當我需要與索尼(存儲在數據庫中的索尼電子INC)我無法得到任何有用的結果同樣的方法(進入索尼給出了Levenshtein距離16)。
我試圖打破該公司的名稱分解成單個的單詞和單獨輸入每一個,導致這樣的事情來解決這個問題:
user input => 'sony'
SELECT * FROM contents
WHERE levenshtein('Sony', 'sony') < 4
OR levenshtein('Electronics', 'sony') < 4
OR levenshtein('INC', 'sony') < 4;
所以我的問題是這樣的:有一些方式,我可以用現在的一般方法準確地實現多詞模糊搜索,或者我正在尋找完全錯誤的地方?
謝謝!