2013-03-19 54 views

回答

0

一般来说,它们不会从数据库中返回。使用具有许多字段选项的高级搜索,并且可能还会从搜索服务器(例如LuceneSphinxXapian)返回一些用于良好度量的布尔逻辑。

从数据库返回几乎不可能有效。它通常是动态生成的查询,如做:

SELECT ... WHERE 1=1 

然后,环比对方字段并添加

AND field LIKE '%abc' 
AND field_2 LIKE '%def%' 
AND field LIKE 'GHI%' 

Idealy加入whildchar %在开始或结束时,如果可能的(由于性能原因),或者两者都用于现场数据中的搜索。

构建和运行此查询使得它几乎不可能具有良好的索引,这使得它们变慢并且成为性能瓶颈的主要候选对象。

+0

谢谢你的见解,史蒂夫。如果您在社交网站上进行高级用户配置文件搜索,您会继续使用搜索服务器吗? – ProgrammerGirl 2013-03-19 23:12:48

+0

@Programmer它真的取决于有问题的数据集以及您正在搜索的字段。有时候一个好的规范化模式设计可以帮助很大 - 例如存储一个CountryId,StateId,TownId等,并且过滤附近的人更加高效,因为必须通过操作字符串来生成相同的数据。搜索服务器是为复杂的搜索而​​设计的,它们通常比RDBMS中的全部搜索服务器都快并且可扩展。 – Steve 2013-03-20 10:55:24