我为斯堪的纳维亚黄页工作.该公司正在考虑将其定制的搜索技术转移到FAST ESP.
像所有安装相对较少的大型昂贵系统一样,很难获得有关系统优缺点的反馈.
有没有拥有FAST ESP经验并希望分享的stackoverflowers?
这将是一个棘手的问题,但无论如何我都会尝试:我们的任务是为数据提供千兆字节的Microsoft FAST ESP.索引数据的最终数量在50-60GB左右.
FAST有一个.NET API,但核心组件是用Python编写的(处理管道索引文档).面临的挑战是与系统可靠地通信,同时为其提供数十亿字节的数据以进行索引.
这里FAST出现的问题是:
当系统一次输入过多数据时系统很古怪,因为它想重新索引数据,在此期间系统几小时内无法连接.不能接受的.
它不是一个选项,可以排队所有数据并一次连续输入一个项目,因为这将花费太长时间(几天).
当一个项目无法通过FAST索引时,客户端必须重新提供该项目.为此,系统应调用回调方法来通知客户端故障.但是,每当系统超时时,馈送客户端都无法对超时做出反应,因为永远不会调用该回调.因此客户正在挨饿.数据在队列中但不能传递给系统.队列崩溃了.数据丢失.你明白了.
笔记:
- 为一件小物品喂食一件物品可能需要几秒钟,而对于一件大件物品而言可能需要多达5-8小时.
- 被索引的项目都是二进制和基于文本的.
- 目标是完全索引"仅"48-72h,即它必须在周末发生.
- 这里的FAST文档处理管道(Python代码)大约有30个阶段.在撰写本文时,共有27个管道.
综上所述:
主要的挑战是以合适的速度为系统提供大小物品(不要太快,因为它可能会崩溃或遇到内存问题;不要太慢,因为这需要太长时间),同时,并行像异步运行线程的方式.在我看来,必须有一个算法,决定何时提供什么项目和一次多少.想到并行编程.
还可能存在多个"队列",其中每个队列(进程)专用于某些大小的项目,这些项目被加载到队列中然后逐个进给(在工作线程中).
我很好奇,如果有人做过这样的事情,或者你将如何解决这样的问题.
编辑:同样,我不打算"修复"FAST ESP或改善其内部运作.挑战是有效地使用它!
只是想知道是否可以禁止整个网站的抓取工具,只允许特定的网页或部分?FAST和Ultraseek等爬虫是否支持"允许"?
fast-esp ×3
.net ×1
c# ×1
database ×1
enterprise ×1
feedback ×1
robots.txt ×1
search ×1
ultraseek ×1