Bil*_*zke 5 lucene solr full-text-search b2b full-text-indexing
鉴于:
可能相关的信息:
例如:
Joel Spolsky在播客#11中表示,他的托管网络应用产品FogBugz On-Demand使用Lucene.他有成千上万的按需客户.每个客户都有自己的数据库.
他们为每个客户端使用一个索引并将其存储在客户端的数据库中.我不确定细节.而且我不确定这对Lucene来说是否是一个严肃的模式.
问题:
您将如何设置Lucene搜索,以便每个客户端只能在其数据库中进行搜索?
你会如何设置索引?
你在哪里存储索引?
您是否需要为所有搜索查询添加过滤器?
如果客户取消了,您将如何删除其(部分)索引?(这可能是微不足道的 - 还不确定)
可能的解决方案:
为每个客户端(数据库)创建索引
拥有一个带有database_name字段的巨大索引.始终包含database_name作为过滤器.
最后一件事:
我也接受使用Solr(Lucene的扩展)的答案.也许它更适合这个问题.不确定.
你从FogBugz StackExchange召唤我.我的名字是Jude,我是FogBugz的现任搜索架构师.
以下是FogBugz On Demand搜索架构如何设置的大致概述[1]:
我们所做的一切都有好处.管理帐户非常简单,因为客户数据及其索引存储在同一个地方.然而,也存在一些负面因素,例如一组非常讨厌的边缘案例搜索,其表现不如我们的最低标准.回顾一下,我们的搜索很酷,并且做得很好.但是,如果我再次这样做,我会劝阻这种做法.
简单地说,除非您的搜索域非常特殊,或者您愿意将开发人员专门用于快速搜索,否则您可能会被ElasticSearch,Solr或Xapian等优秀产品所取代.
如果我今天这样做,除非我的搜索域非常具体,否则我可能会使用ElasticSearch,Solr或Xapian作为我的数据库支持的全文搜索解决方案.至于哪个,这取决于你的辅助需求(平台,查询类型,可扩展性,一组怪癖对另一组的容忍度等)
关于一个大索引与多个(!)分散索引的主题:两者都可以工作.我认为这个决定真的取决于你要构建什么样的架构,以及你需要什么样的性能.如果您认为2秒的搜索响应是合理的,那么您可以非常灵活,但是一旦您开始说超过200毫秒的任何内容都是不可接受的,您的选项就会很快消失.虽然为所有客户维护单个大型搜索索引可以大大提高效率与处理大量小指数相比,它不一定更快(正如你所指出的那样).我个人认为,在安全的环境中,保持客户数据分离的好处不容小觑.当你的索引被破坏时,它不会使所有搜索停止; 愚蠢的小虫子不会暴露敏感数据; 用户帐户保持模块化 - 提取一组帐户并将它们放到新服务器上更容易; 等等
我不确定这是否回答了你的问题,但我希望我至少满足你的好奇心:-)
[1]:2013年,FogBugz开始使用ElasticSearch为其搜索和过滤功能提供支持.我们喜欢它.
归档时间: |
|
查看次数: |
1244 次 |
最近记录: |