lucene .net在哪里缓存搜索结果?

时间:2009-03-27 15:53:33

标签: c# asp.net lucene.net

我正在试图找出Lucene存储缓存查询结果的位置,以及它如何配置这样做 - 以及它缓存多长时间。

这适用于ASP.NET 3.5解决方案
我遇到了这个问题:
如果我运行搜索并按特定产品字段对结果进行排序,则它似乎在第一次使用每个搜索和排序组合时起作用。如果我然后进入并更改一些产品属性,重新索引并运行相同的搜索和排序,我会按照与第一个结果相同的顺序返回产品。

例如

产品A的名称为:foo
产品B命名为:bar

对于第一次搜索,按名称desc排序。这导致:

      
  1. 产品A
  2.   
  3. 产品B

  4. 现在混淆数据:

    1. 将名称更改为:
      产品A命名:bar
      产品B命名为:foo
    2. 重新索引
    3. 验证索引是否包含这两种产品的更改。
    4. 搜索
    5. 结果:

      1. 产品A
      2. 产品B
      3. 由于我更改了名称的字母顺序,我预计:

        1. 产品B
        2. 产品A
        3. 所以我认为Lucene正在缓存搜索结果。 (顺便说一句,顺便说一下,这是一个非常好的事情。)我只需要知道在哪里/如何清除这些结果。我已经尝试删除索引文件并执行IISreset来清除内存,但它似乎没有任何效果。所以我认为Lucene用于缓存的索引之外还有另一组Lucene文件。

          修改

          我刚刚发现你必须为你想要排序的字段创建非标记化的索引。我将字段标记为已标记,因此排序无效。

1 个答案:

答案 0 :(得分:0)

Lucene.net使用QueryFilters有一个简单的缓存机制。当您对索引进行更改并希望反映其更改时,您需要关闭并重新打开IndexSearcher