繁体   English   中英

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

[英]Where does lucene .net cache the search results?

我试图弄清楚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文件。

编辑

我刚刚发现,您必须为要排序的字段创建索引(未标记)。 我将该字段标记为令牌,因此排序无法正常进行。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM