问题标签 [lucene]

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 投票
5 回答
4680 浏览

lucene - Lucene 和 Lucene.Net 中的俄语分析器

Lucene 对俄语的支持很差。

RussianAnalyzer(lucene-contrib 的一部分)质量非常低。

Snowball 的RussianStemmer 模块更糟糕。它不能识别 Unicode 字符串中的俄语文本,显然是假设必须使用 Unicode 和 KOI8-R 的一些奇怪组合。

你知道更好的解决方案吗?

0 投票
3 回答
9751 浏览

lucene - 如何估计 Lucene 索引的大小?

是否有一个已知的数学公式可以用来估计新的 Lucene 索引的大小?我知道我想要索引多少个字段,以及每个字段的大小。而且,我知道有多少项目将被编入索引。那么,一旦这些被 Lucene 处理,它是如何转化为字节的呢?

0 投票
5 回答
2757 浏览

lucene - 如何按 Lucene.Net 字段排序并忽略“a”和“the”等常见停用词?

我发现了如何按 Lucene.Net 索引中的给定字段而不是按分数对查询结果进行排序;所需要的只是一个已编入索引但未标记化的字段。但是,我无法弄清楚的是如何在忽略“a”和“the”等停用词的情况下对该字段进行排序,以便例如以下书名按升序排序:

  1. 帽子里的猫
  2. 霍顿听到谁

这样的事情是否可能,如果是,如何?

我正在使用 Lucene.Net 2.3.1.2。

0 投票
3 回答
9026 浏览

java - 是否有适用于 Lucene 的快速、准确的荧光笔?

一段时间以来,我一直在使用 (Java) Highlighter for Lucene(在 Sandbox 包中)。但是,在匹配搜索结果中的正确术语时,这并不是很准确 - 它适用于简单的查询,例如搜索两个单独的单词会突出显示结果中的两个代码片段。

但是,它不适用于更复杂的查询。在最简单的情况下,诸如“Stack Overflow”之类的短语查询将匹配突出显示中出现的所有 Stack 或 Overflow,这给用户留下了它运行不佳的印象。

我尝试在此处应用此修复程序,但随之而来的是很多性能警告,最终根本无法使用。性能尤其是通配符查询的问题。这是由于突出显示的工作方式;而不是只处理查询字符串和文本,它会像 Lucene 那样解析它,然后查找 Lucene 所做的所有匹配;不幸的是,这意味着对于某些通配符查询,它可以在大型文档中查找与 2000 多个子句匹配的内容,而且速度还不够快。

有没有更快的准确荧光笔实现?

0 投票
5 回答
3442 浏览

database - 如何使用 Lucene 最好地搜索数据库?

我正在研究针对我们的数据库提供更好搜索功能的机制。它目前是一个巨大的瓶颈(导致长期查询损害我们的数据库性能)。

我的老板想让我研究Solr,但仔细观察,似乎我们实际上想要某种与 Lucene 本身的数据库集成机制。

Lucene FAQ中,他们推荐使用Hibernate SearchCompassDBSight

作为我们当前技术堆栈的背景,我们在 Tomcat 上使用直接的 JSP,没有 Hibernate,在其之上没有其他框架……只是针对 DB2 数据库的直接 Java、JSP 和 JDBC。

鉴于此,似乎 Hibernate Search 可能更难以集成到我们的系统中,尽管在这样的集成之后选择使用 Hibernate 可能会很好。

有没有人可以分享使用这些工具之一(或其他类似的基于 Lucene 的解决方案)的经验,这可能有助于选择正确的工具?

它需要是一个 FOSS 解决方案,理想情况下,它将自动(尽管有效)使用来自数据库的更改来管理更新 Lucene,而无需额外努力在进行更改时通知工具(否则,滚动我自己的 Lucene 解决方案似乎只是一样好)。此外,我们有多个应用程序服务器,只有 1 个数据库(+故障转移),因此如果可以轻松无缝地使用来自所有应用程序服务器的解决方案,那就太好了。

我现在正在继续检查这些选项,但利用其他人的经验会非常有帮助。

0 投票
3 回答
989 浏览

search - 最好的搜索方法是什么?

我在我的项目中使用 lucene。这是我的问题:我应该使用lucene来替换已经用sql实现的整个搜索模块,使用大量like语句并通过id或sth进行准确搜索,还是应该在模糊搜索中使用lucene(我的意思是全文搜索)?

0 投票
3 回答
12638 浏览

optimization - 是否应该在 Lucene 中的增量索引之后优化索引?

我们每 7 天在 Lucene 索引上运行一次完整的重新索引(即从头开始创建索引),每 2 小时左右运行一次增量索引。我们的索引有大约 700,000 个文档,完整索引大约需要 17 个小时(这不是问题)。

当我们做增量索引时,我们只索引在过去两个小时内发生变化的内容,所以它花费的时间要少得多——大约半小时。但是,我们注意到其中很多时间(可能是 10 分钟)都花在了运行 IndexWriter.optimize() 方法上。

LuceneFAQ提到

IndexWriter 类支持压缩索引数据库并加快查询速度的 optimize() 方法。您可能希望在对文档集执行完整索引之后或在索引的增量更新之后使用此方法。如果您的增量更新频繁添加文档,您希望只偶尔执行一次优化以避免优化的额外开销。

...但这似乎没有对“经常”的含义给出任何定义。优化是 CPU 密集型和 IO 密集型的,所以如果我们可以侥幸逃脱,我们宁愿不这样做。在未优化的索引上运行查询的影响有多大(我在考虑特别是在完全重新索引后的查询性能方面,与在 20 个增量索引后相比,例如,50,000 个文档已更改)?我们应该在每个增量索引之后进行优化,还是性能损失不值得?

0 投票
5 回答
54146 浏览

java - 如何在 Lucene 中查询自动完成/建议?

我正在寻找一种在 Lucene 中进行查询自动完成/建议的方法。我用谷歌搜索了一下,玩了一下,但我看到的所有例子似乎都是在 Solr 中设置过滤器。我们不使用 Solr,也不打算在不久的将来使用 Solr,而且 Solr 显然只是围绕着 Lucene,所以我想一定有办法做到这一点!

我已经研究过使用 EdgeNGramFilter,我意识到我必须在索引字段上运行过滤器并取出标记,然后将它们与输入的查询进行比较......我只是在努力建立联系将两者转换为一些代码,非常感谢您的帮助!

为了清楚我在寻找什么(我意识到我并没有说得太清楚,抱歉) - 我正在寻找一个解决方案,在搜索一个术语时,它会返回一个建议查询的列表。在搜索字段中输入“inter”时,它会返回一个建议查询列表,例如“internet”、“international”等。

0 投票
9 回答
4889 浏览

asp.net - ASP.NET 使用哪种搜索技术?

在网站上提供搜索工具的首选方法是什么?目前我更喜欢使用Lucene.net而不是索引服务/SQL Server 全文搜索(因为没有什么可以设置服务器端),但是还有哪些其他方法正在使用呢?

0 投票
5 回答
9889 浏览

java - 使用 Lucene 统计分类结果

我正在尝试使用 Lucene Java 2.3.2 来实现对产品目录的搜索。除了产品的常规字段外,还有一个名为“类别”的字段。一个产品可以属于多个类别。目前,我使用 FilteredQuery 为每个类别搜索相同的搜索词,以获取每个类别的结果数。

这会导致每个查询进行 20-30 次内部搜索调用以显示结果。这大大减慢了搜索速度。有没有更快的方法使用 Lucene 实现相同的结果?