【发布时间】:2015-10-28 05:43:50
【问题描述】:
我正在使用 .Net 开发一个高级搜索引擎,用户可以在其中基于多个字段构建查询:
- 标题
- 文档内容
- 开始日期,结束日期
- 从修改日期到修改日期
- 所有者
- 位置
- 其他元数据
我正在使用 lucene 来索引文档内容及其对应的 ID。但是,其他元数据驻留在 MS SQL DB 中(以避免扩大索引,并在元数据的任何修改时不断更新索引)。
如何执行搜索?
当任何用户搜索一个词时:
- 通过在 SQL DB 中查找,根据用户选择的条件缩小搜索结果。
- 将匹配的 ID 返回到 lucene searcher Web 服务,该服务搜索在从 Adv Search Web 服务返回的 DocumnentID 中输入的关键字。
- 然后通过再次查看数据库来获取文档 ID 的相关元数据(从 lucence 返回)。
正如您在此处所注意到的,在 DB 中进行了一次查找,然后是 Lucene,最后是 DB,以获取要在 Grid 中显示的值。
问题:
如何克服这种情况?我想开始搜索 lucene,但如果索引的文档达到 200 万,这有一个缺点。 (我认为首先使用 DB 缩小结果范围对性能有很大影响)。
另一个问题是将 ID 传递给 lucene 搜索服务,传递数十万个 ID 的效果如何?什么是替代解决方案?
我欢迎任何想法,所以请分享你的想法。
【问题讨论】:
标签: sql-server database indexing lucene search-engine