如何将全文搜索和过滤与lucene.Net相结合

时间:2009-10-29 17:19:18

标签: lucene.net

我正在使用Lucene.Net为我们的支持票据数据库构建一个简单的搜索表单,我想添加过滤功能,例如按票证状态过滤结果。什么是最好的方法呢?据我所知,我的选择是:

  1. 在我的索引中包含我要过滤的所有字词,并使用Lucene.Net
  2. 进行过滤
  3. 从Lucene获取搜索结果后应用过滤器,方法是转到数据库,过滤掉Lucene返回的对过滤器无效的结果。
  4. 选项1会为我想要过滤的每个额外字段越来越多地扩大索引的大小。另一方面,选项2会使我的索引的大小膨胀,在添加新字段以进行过滤时会导致问题,并且使分页更加棘手。

    这里有明显的选择,还是两者都可以接受? (还有第三种选择我无法看到吗?)

1 个答案:

答案 0 :(得分:2)

我不担心索引的大小:-)

我们一直选择选项1,并且永远不会过滤lucene.net之外的数据。你可能最终会遇到这样的情况,你需要在数据库中过滤后获得“真实”命中数之前从lucene.net检索大量命中 - 它可能还需要几次往返数据库。

我们目前在150K文件上平均有大约100个字段,而且效果非常好。