2012-10-30 280 views
0

我需要您的意见... 我正在开发一个应用程序在PHP & MYSQL(AZURE环境)。 我在MYSQL中为应用程序编写了一个搜索引擎。 搜索引擎应该对页面进行索引。每个页面都被“拆分”为单词,并且为每个单词创建一个包含该单词出现的所有地址的表格。mysql搜索引擎

例如,如果客户端查找单词“tablet”,应用程序将访问名为“tablet”的表并提取表中的所有地址。 如果你正在搜索这两个单词,然后检索所有地址两个相关的表,并执行切割每个地址。

问题是至少有10 000个单词,即10 000个表。 DATABASE中是否存在大量表的问题? 微软云服务器(AZURE)的使用是否改善了这种情况? 数据库写入是为了分配云中的表还是只是让它们生成,而云会照顾并为我安排它们?

+4

你为什么要为每个单词创建一个表格? –

+0

你有一个单独的表为每个单词?这似乎是一个非常低效的设计。 – andrewsi

+0

如果你有这样一个奇怪的数据库设计,你应该解释你为什么选择这个。 – NilsB

回答

0

您应该考虑为您编制索引的解决方案。 Apache Lucene是他们http://lucene.apache.org/core/之一,如果你使用的是PHP,也有这种语言的实现以及(framework.zend.com)

我也建议使用狮身人面像搜索http://sphinxsearch.com。这是一个很棒的工具,可以为你做索引。它将索引数据库中的数据,并提供可以在ANSI SQL中查询的接口。

+0

感谢所有回应 我的目标多个表是缩短搜索时间。 1.无需真的看 - 我打开相关表格,并以最好的分数抽出1000个结果 1.我可以同时搜索字数 3.减少表格的大小。不需要在表中的每一行添加单词 我读过关于搜索引擎的内容。 起初,我想建立一个搜索引擎,然后我想让搜索更直观,例如,如果用户写道“我想摆脱我的车”,然后归类为“卖车”。 – user1786691

0

你在做什么是复制倒排索引模式已经做了什么。您应该查看Lucene(java)或lucene.net(.net)以获得非常成熟的索引实现,该实现是开源的。

正如上面提到的,每个单词(在lucene中称为术语)都有一张表是不可缩放的。