1

我试图弄清楚 Lucene 将缓存的查询结果存储在哪里,以及它是如何配置的——以及它缓存了多长时间。

这是针对 ASP.NET 3.5 解决方案的。

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

例子

产品 A 被命名为: foo
产品 B 被命名为: bar

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

  1. 产品A
  2. 产品B


现在稍微混合一下数据:

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

结果:

  1. 产品A
  2. 产品B

由于我更改了名称的字母顺序,因此我期望:

  1. 产品B
  2. 产品A

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

编辑

我刚刚发现您必须为要作为未标记化排序的字段创建索引。我将该字段标记为标记,因此排序不起作用。

4

1 回答 1

0

Lucene.net 通过使用 QueryFilters 有一个简单的缓存机制。当您的索引发生更改并且您想要反映它的更改时,您需要关闭并重新打开 IndexSearcher

于 2009-03-27T16:25:05.717 回答