代码之家  ›  专栏  ›  技术社区  ›  Nick

我的Lucene文档中应该包含什么?

  •  1
  • Nick  · 技术社区  · 17 年前

    Lucene.net 索引内容和文档等。。在我们的CMS上。到目前为止,这项工作做得很好,但现在我必须考虑网页中添加的以下内容:

    1. 出版日期
    2. 页面“处于活动状态”
    3. 用户授权

    因此,搜索结果应仅显示发布/到期窗口内的“活动”页面以及当前用户有权查看的页面。

    我应该在Lucene索引中包含上述信息吗?这将使查询更加复杂,但hits集合将只返回“有效”文档,这将使分页结果更加容易。

    还有其他人有这个问题吗?你是怎么解决的?谢谢

    编辑: here )要将“有效”文档ID传递到lucene搜索中?

    2 回复  |  直到 17 年前
        1
  •  1
  •   bajafresh4life    17 年前

    首先查询CMS数据库,并构建一个包含所有匹配文档的位集(需要一个FieldCache在应用程序的文档ID和Lucene的内部文档ID之间进行转换)。然后可以使用过滤器(包装位集)对索引运行Lucene查询。

    您将所有可变数据保存在数据库中(它所属的位置),并且不必担心更新或重建索引。这也将运行得非常快。

    另外,我只使用了Lucene的Java版本,但在Lucene.NET中应该可以正常工作

        2
  •  0
  •   Shane C. Mason    17 年前

    …所以搜索结果应该只显示 显示发布中的页面 当前用户被授权 看法

    有几种方法可以处理授权问题。您可以维护多个索引(每个权限级别一个)、使用查询过滤结果(通过存储所需权限)或在显示结果之前过滤结果。如果只有几个级别,我想我会保持单独的索引-这似乎是最安全的。

    至于“是活动的”-你能记住这一点重建你的索引吗?只需每隔一段时间在后台重建索引,并且只添加活动内容。你可能有太多的信息,使之可行-但Lucene是非常快的。