使用文本搜索查找所有可能结果的算法

时间:2010-11-22 22:54:44

标签: algorithm search web-crawler

我目前正在制作一个网络抓取工具来抓取视频游戏网站上的所有可能角色(最终幻想XIV Lodestone)。

我这样做的界面是使用网站的搜索。 http://lodestone.finalfantasyxiv.com/rc/search/characterForm

如果搜索找到超过1000个字符,它只返回前1000个。文本搜索似乎也不理解* ,?或_。

如果搜索字母a,我将获得所有在其名称中包含a的字符,而不是所有以a开头的字符。

我猜我可以搜索所有角色组合aa,ab,ba等。但这并不能保证我:

  • 我的结果永远不会超过1000
  • 许多字符多次出现并且需要过滤掉它似乎不是很有效。

我正在寻找一种关于如何构建搜索文本的算法。

2 个答案:

答案 0 :(得分:0)

这里的主要问题是你打算用所有这些角色做什么。你的课程的目的是什么?把它放在一边,你可以搜索单个字母,并按主要技能和世界进行过滤(使用双循环)。对于任何辅音,你不太可能有超过1000次点击。如果你想搜索以元音开头的名字,那么在循环中使用bigraph vowel-other_letter,从a到Z迭代other_letter。

其他优化是尝试猜测具有所需字母的列表将从哪个页面开始。如果您有总页数(TNOP),那么您的列表将从页面TNOP * LETTER / 27附近的某处开始,其中LETTER是字母表中字母的顺序。

答案 1 :(得分:0)

考虑到实际问题,您是否曾向Square Enix询问某种API访问或数据库转储?他们可能更愿意让你刮掉他们的搜索结果。

纯粹是抽象地考虑,并不清楚任何搜索策略是否会成功找到所有结果。假设有一个名为“Ar”的角色,你会怎么找到它?如果你搜索“ar”,结果只会到达Ak-。如果你搜索“a”或“r”,情况会更糟。任何其他搜索都无法找到此字符。 (在实践中,你可以通过猜测它的世界和/或主要技能来找到“Ar”,但理论上可能有那么多角色在这个世界上有这种技能,这仍然是无效的。)