我正在试图找出Lucene存储缓存查询结果的位置,以及它如何配置这样做 - 以及它缓存多长时间。
这适用于ASP.NET 3.5解决方案
我遇到了这个问题:
如果我运行搜索并按特定产品字段对结果进行排序,则它似乎在第一次使用每个搜索和排序组合时起作用。如果我然后进入并更改一些产品属性,重新索引并运行相同的搜索和排序,我会按照与第一个结果相同的顺序返回产品。
产品A的名称为:foo
产品B命名为:bar
对于第一次搜索,按名称desc排序。这导致:
现在混淆数据:
结果:
由于我更改了名称的字母顺序,我预计:
所以我认为Lucene正在缓存搜索结果。 (顺便说一句,顺便说一下,这是一个非常好的事情。)我只需要知道在哪里/如何清除这些结果。我已经尝试删除索引文件并执行IISreset来清除内存,但它似乎没有任何效果。所以我认为Lucene用于缓存的索引之外还有另一组Lucene文件。
我刚刚发现你必须为你想要排序的字段创建非标记化的索引。我将字段标记为已标记,因此排序无效。
答案 0 :(得分:0)
Lucene.net使用QueryFilters有一个简单的缓存机制。当您对索引进行更改并希望反映其更改时,您需要关闭并重新打开IndexSearcher