【发布时间】:2013-09-03 17:50:58
【问题描述】:
目前我正在尝试为我的网站创建一个搜索功能,允许用户使用他们的全名(名字或姓氏)或他们的用户名搜索其他用户。现在我创建了一个临时搜索,它使用 mysql 的 LIKE 功能和 %name% 以允许使用通配符。它非常简单。我遇到的问题是在提供全名并且数据库中只有名称的缩短版本时尝试搜索名称。例如:
搜索 Richard 只会找到 Richards 而不会找到 Richs。对于如何创建能够做到这一点而又不会非常低效的东西,我真的很难过。我打算使用 SOUNDEX,但这只对英文名称和单词有用。
我还想问一下,使用像 Apaches Lucene 这样的搜索引擎来索引数据库是否更好?我正在考虑这样做,但不确定是否值得,因为搜索引擎只会搜索小的全文字符串。
谢谢
【问题讨论】:
-
尝试使用
levensthein过滤器stackoverflow.com/questions/4671378/levenshtein-mysql-php -
这似乎是最好的方法,但它是用于大型数据库的最佳方法吗?将信息放回数据库后,我将搜索超过一百万用户的库存。