问题标签 [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 投票
3 回答
3932 浏览

search - Lucene 评分结果

在 Lucene 中,如果您有多个索引,每个索引只覆盖一个分区。为什么在不同的索引上进行相同的搜索会返回不同分数的结果?来自不同服务器的结果完全匹配。

即,如果我搜索:

  • 姓名 - 约翰·史密斯
  • 出生日期 - 1934 年 11 月 11 日

分区 0将返回 0.345 的分数

分区 1将返回 0.337 的分数

两者都完全匹配名称和出生日期。

0 投票
3 回答
2754 浏览

lucene - Lucene 精确排序

我在不太了解如何实现一个像样的 Lucene 排序或排名方面遇到了这个长期问题。假设我有一个城市及其人口的列表。如果有人搜索“新”或“伦敦”,我想要按人口排序的前缀匹配列表,并且我使用前缀搜索和反转的按字段排序,其中有一个人口字段,即纽约新墨西哥州; 或伦敦,伦敦德里。

但是,我也总是希望完全匹配的名称位于顶部。因此,在“伦敦”的情况下,列表应该显示“伦敦,伦敦,伦敦德里”,其中第一个伦敦在英国,第二个伦敦在康涅狄格州,即使伦敦德里的人口比伦敦 CT 高。

有没有人有一个单一的查询解决方案?

0 投票
3 回答
6568 浏览

exception - 使用 Lucene:如果我进行前缀搜索,为什么会收到太多子句错误?

我有一个应用程序进行前缀搜索一段时间。最近索引大小增加了,结果发现某些前缀太多,以至于 lucene 无法处理。它不断向我抛出一个Too Many Clauses错误,这让我非常沮丧,因为我一直在查看我的 JAR 并确认包含的代码实际上都没有使用布尔查询。

为什么它不抛出类似 Too Many Hits 异常的东西?当我肯定只使用前缀查询时,为什么增加布尔查询的静态最大子句整数实际上会使这个错误消失?查询的运行方式是否有一些我不理解的基本内容?是不是他们偷偷变成了布尔查询?

0 投票
7 回答
13437 浏览

search - Solr 中的通配符查询错误

我使用 solr 搜索文档,当尝试使用此查询“ id:*”搜索文档时,我收到此查询解析器异常,告诉它无法使用 * 或?作为第一个字符。

是否有任何补丁可以让它与 * 一起工作?还是做这样的查询成本很高?

0 投票
4 回答
6642 浏览

.net - 使用 Lucene 搜索电子邮件地址

我想使用 Lucene(特别是 Lucene.NET)来搜索电子邮件地址域。

例如,我想搜索“@gmail.com”以查找发送到 gmail 地址的所有电子邮件。

对“*@gmail.com”运行 Lucene 查询会导致错误,星号不能位于查询的开头。对“@gmail.com”运行查询不会返回任何匹配项,因为“foo@gmail.com”被视为一个完整的单词,您不能只搜索单词的一部分。

我怎样才能做到这一点?

0 投票
4 回答
28356 浏览

java - 如何在 solr 结果中获得构面范围?

假设我在 Solr 中有一个名为price的文档字段,并且我对该字段进行了分面。我想将方面作为值范围(例如:0-100、100-500、500-1000 等)。怎么做?

我可以事先指定范围,但我也想知道是否可以根据文档中的值自动计算范围(比如 5 个值)?

0 投票
2 回答
1095 浏览

indexing - 使 Lucene 索引与域模型更改保持同步的策略

随着对应用程序的域模型对象的更改,希望让人们对保持 Lucene 索引保持最新的想法。

有问题的应用程序是一个使用 Hibernate 的基于 Java/J2EE 的 Web 应用程序。我目前的工作方式是 Hibernate 映射模型对象都实现了一个通用的“可索引”接口,该接口可以返回一组记录在 Lucene 中的键/值对。每当执行涉及此类对象的 CRUD 操作时,我通过 JMS 队列将其发送到消息驱动的 bean 中,该 bean 在 Lucene 中记录对象的主键和从 Indexable 对象的 index() 方法返回的键/值对假如。

我对这个方案的主要担心是 MDB 是否落后并且无法跟上即将到来的索引操作,或者如果某种错误/异常阻止对象成为索引。结果是某个时间段或较长时间段的过期索引。

基本上我只是想知道其他人为这种事情想出了什么样的策略。不一定要寻找一个正确的答案,但我正在想象一系列“白板”之类的想法,让我的大脑思考替代方案。

0 投票
5 回答
4249 浏览

c++ - MS SQL、C++ 解决方案的最佳全文搜索替代方案

Microsoft SQL 的最佳全文搜索替代方案是什么?(适用于 MS SQL)

我正在寻找类似于LuceneLucene.NET但没有 .NET 和 Java 要求的东西。我还想找到一种可用于商业应用的解决方案。

0 投票
4 回答
1308 浏览

java - 排除 Java Lucene 忽略字段问题

我们目前正在使用 Lucene 2.1.0 进行站点搜索,但遇到了一个难题:在目标搜索期间,我们的一个索引字段被忽略了。以下是将字段添加到我们索引中的文档的代码:

对索引运行查询 ( * ) 将返回以下结果:

运行有针对性的查询:

不会找到任何结果。

我意识到这是一个非常具体的问题,我只是想获取有关从何处开始调试此问题的信息,因为我是 Lucene 新手。


更新

安装卢克,检查最新索引...字段market_local在搜索中可用,所以如果我执行类似的操作:

搜索工作正常(在卢克)。我现在正在检查我们的分析器代码,有什么办法可以将这个问题归结为我们的搜索应用程序使用的是 Lucene 2.1.0 而最新版本的 Luke 使用的是 2.3.0 的事实?

0 投票
1 回答
1290 浏览

lucene - 在 Lucene 中,术语如何用于计算分数,我可以用 CustomScoreQuery 覆盖它吗?

是否有人成功地覆盖了查询中的文档评分,以便可以通过自己的功能确定术语与字段内容的“相关性”?如果是这样,是通过实现CustomScoreQuery并覆盖 customScore(int, float, float) 吗?我似乎找不到一种方法来构建自定义排序或自定义记分器,它可以将精确术语匹配的排名远高于其他前缀术语匹配。任何建议,将不胜感激。