Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# lucene.net在哪里缓存搜索结果?_C#_Asp.net_Lucene.net - Fatal编程技术网

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

C# lucene.net在哪里缓存搜索结果?,c#,asp.net,lucene.net,C#,Asp.net,Lucene.net,我试图弄清楚Lucene在哪里存储缓存的查询结果,以及它是如何配置的,以及缓存多长时间。 这是针对ASP.NET 3.5解决方案的。 我遇到了这个问题: 如果我运行搜索并按特定的产品字段对结果进行排序,那么在第一次使用每个搜索和排序组合时,它似乎都会起作用。如果我随后进入并更改一些产品属性,重新编制索引并运行相同的搜索和排序,我将以与第一个结果相同的顺序返回产品。 实例 产品A的名称为:foo 产品B的名称为:bar 对于第一次搜索,按名称desc排序。结果为: 产品A 产品B 现在将数

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

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

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

实例 产品A的名称为:foo
产品B的名称为:bar

对于第一次搜索,按名称desc排序。结果为:

  • 产品A
  • 产品B

  • 现在将数据稍微混合一下:

  • 将名称更改为:
    产品名称:bar
    产品乙名称:富
  • 重新索引
  • 验证索引是否包含这两种产品的更改
  • 搜寻
  • 结果:

  • 产品A
  • 产品B
  • 由于我更改了姓名的字母顺序,我希望:

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

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

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

    执行IISreset不会清除它吗?或者是因为它被保存在一个文件中,我必须打开和关闭IndexSearcher,然后文件会被重写?我只是检查了IndexSearcher的使用位置-它们会为每个查询重新创建。没有使用任何Close()方法-它们只是在超出范围时关闭。