问题标签 [lucene.net]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
15166 浏览

lucene - 使用 RAM 目录

什么时候应该使用 Lucene 的 RAMDirectory?与其他存储机制相比,它有哪些优势?最后,我在哪里可以找到一个简单的代码示例?

0 投票
2 回答
1115 浏览

lucene.net - Lucene.net 和 3.5

在针对 lucene.net 的 2.0 构建构建 3.5 应用程序时,是否有任何特殊注意事项需要注意?

我发现有几个人会发布他们的 lucene 项目文件,但不确定这是否是正确的方法。

0 投票
1 回答
1586 浏览

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

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

编辑

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

0 投票
1 回答
388 浏览

lucene - 在 Lucene 中阅读文档

我在 Lucene 中的索引文档已经分配了多个城市......即。doc.Add(new Field("city", city1.Trim(), Field.Store.YES, Field.Index.TOKENIZED)); doc.Add(new Field("city", city2.Trim(), Field.Store.YES, Field.Index.TOKENIZED)); ETC

如何在执行 Lucene 搜索查询后遍历它们并读取值?

谢谢。

0 投票
1 回答
2891 浏览

lucene - Lucene 分析器和点

我是 Lucene 的新手。

有什么办法可以让 Lucene 分析器不忽略字符串中的点?例如,如果我的搜索条件是:“ABCD”,Lucene 应该只给我搜索结果中包含“ABCD”而不是“ABCD”的那些文档......

0 投票
2 回答
5711 浏览

c# - Lucene RangeQuery 没有正确过滤

RangeQuery用来获取数量在 0 到 2 之间的所有文档。当我执行查询时,Lucene 也会给我提供数量大于 2 的文档。我在这里想念什么?

这是我的代码:

这是我的索引中的内容:

0 投票
2 回答
583 浏览

lucene.net - Lucene 版本

有人听说过 Lucene 2.3.1.3 版吗?我们在生产项目中使用它。不过Lucene的稳定版是2.0.0.4版。

我应该推动将项目的依赖项移至版本 2.0.0.4 吗?

0 投票
2 回答
364 浏览

lucene - 城市名称查询

我是 Lucene 的新手,正在使用 Lucene 开发城市搜索 API。如果用户输入 san francisco 作为搜索输入,那么它应该只给出完全匹配的城市,而不是 San Jose/San Diego 等。

我应该如何在 Lucene 中索引城市名称?我需要使用哪个 Lucene 分析器和查询类?

0 投票
3 回答
2220 浏览

performance - 对 Lucene 搜索结果进行分组并按类别计算频率

我正在使用 Lucene 开发商店搜索 API。

我需要在括号中显示每个城市、州组合的商店搜索结果及其频率......例如:

到目前为止,如果用户说“显示所有商店”,我的搜索结果平均会返回大约 7000 个 Lucene 文档。在这个用例中,我最终显示了大约 800 个独特的 City,State 记录,如上所示。

我正在重写HitCollector类的Collect方法并检索向量,如下所示:

然后我遍历这个集合并计算每个唯一城市、州组合的频率。

但这在性能上变得非常非常缓慢......有没有更好的方法来分组搜索结果和计算 Lucene 中的频率?一个代码片段会很有帮助

另外,请建议我是否可以使用任何其他技术/技巧来优化我的 Lucene 搜索代码....

谢谢阅读!

0 投票
1 回答
1981 浏览

lucene - Lucene IndexSearcher 在重建时锁定索引导致 IOException

我从阅读可用文档中了解到,应该在搜索之间共享 IndexSearcher 实例,以获得最佳性能,并且必须创建一个新实例才能加载对索引所做的任何更改。这意味着在创建了指向同一目录的 IndexSearcher 实例之后,索引是可写的(使用 IndexWriter)。但是,这不是我在 Lucene.Net 实现中看到的行为。我正在使用 FSDirectory。RAMDirectory 不是一个可行的选择。IndexSearcher 锁定一个索引文件(在我的实现中它是 _1.cfs 文件),使索引在 IndexSearcher 实例的生命周期内不可更新。

这是一种已知的行为吗?在使用重建之前创建的 IndexSearcher 实例时,我不能从头开始重建索引吗?是否只能修改索引而不能重建它?

下面是我创建 IndexSearcher 实例的方法:

以下是我创建 IndexWriter 的方法:

我正在使用 Lucene.Net 2.0 版。

编辑:

升级到 Lucene.Net 2.1 (thx KenE) 并稍微修改我创建 IndexWriter 的方式解决了这个问题: