我有一个城市的位置搜索website,我们开始收集城市中所有可能类别的数据,如学校,学院,部门商店等,并将他们的信息存储在一个单独的表中,作为每个条目除了姓名,地址和电话号码之外,还有不同的细节。
我们必须在网站中集成搜索以使人们能够查找信息,因此我们构建了一个索引表,其中我们存储了相同类别的类别和相关关键字以及在搜索该类别时提取的表格。 。稍后我们添加了搜索名称和地址的功能,并添加了另一个包含所有表中的字段的主表到一个地方。现在我怀疑是以下
如果我错了,请纠正我,我查看了Lucene和Google自定义搜索,他们不是通过抓取现有网页并建立自己的索引来制作索引吗?我在mysql数据库上有一组表,我必须在其上应用搜索。我有什么选择?
答案 0 :(得分:3)
解决您的观点:
使用%input%非常糟糕。这将导致每个查询的全表扫描。在任何负载量下,甚至在远程大型数据集上,您的数据库服务器都会阻塞。
单独使用RDBMS不是一个好的解决方案。您正在通过寻找单独的搜索解决方案来寻找合适的位置。可以与您的RDBMS良好通信的东西是好的;在RDBMS中运行的东西将无法满足您的需求。
MySQL中的全文搜索适用于非常基本的关键字搜索,仅此而已。有用的范围非常有限 - 您需要一个高度可预测的使用模型来利用内置搜索。它被称为“搜索”,但它并不像大多数人想象的那样搜索。与Google和Bing所期望的搜索结果质量相比,它没有比较。在“搜索”这个词的意义上,它是其他东西 - 比如Notepad vs Word。它们都是要输入的东西,但就是它。
就处理搜索的单独系统而言,Lucene非常好。 Lucene工作,但你希望它能够工作,基本上。您可以以编程方式与其进行交互以插入可索引文档。同样,可以为Google Appliance(不是Google Custom Search)提供直接元提要,它会公开您想要编入索引的内容,例如直接来自数据库的数据。
答案 1 :(得分:2)
看看狮身人面像:http://www.sphinxsearch.com/
根据他们的网站:
如何实现对这个超过10万行表的全文搜索,跟上负载并保持相关性?狮身人面像擅长这些谜语。
它现在非常受到rails社区中很多人的欢迎,而且他们都非常赞赏它有多棒:)