问题标签 [lucene-highlighter]

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 回答
812 浏览

java - 当查询包含正斜杠时,Lucene 的 Highlighter.getBestFragments 方法返回空字符串

我有一个应用程序,当输入像“fulltext:rajath AND filepath:rajath”这样的查询时,Highlighter.getBestFragments 会正确返回。但是,如果输入的同一查询在文件路径中包含“/”,这意味着如果查询类似于“fulltext:rajath AND filepath:rajath/rajath1”,则 Highlighter.getBestFragments 方法将返回一个空字符串。请让我知道如何解决这个问题。我严重怀疑这个问题是因为查询中的正斜杠。有什么办法可以逃脱吗?

目前我在我的应用程序中使用 lucene 2.9.3,其中突出显示不正确。但是查询“fulltext:rajath AND filepath:rajath/rajath1”用于在 lucene 2.2.0 中正确突出显示关键字 rajath。在 2.2.0 和 2.9.3 中输入“fulltext:rajath AND filepath:rajath/rajath1”时,内部查询更改为 [+fulltext:rajath +filepath:"rajath rajath1"]

0 投票
0 回答
360 浏览

lucene.net - 如何在 lucene.net 中突出显示查询而不是突出显示搜索结果?

我为此搜索了很多,但直到现在我都找不到任何解决方案。我有一个与邻近搜索相结合的大型查询。我需要找出查询中结果的确切位置在哪里。例如查询的一部分是 "hospital"~2 "readmissio"~2 。现在 Lucene 检索到正确的文档,其中一个包含正确的值“hospital re-admission”,但是我如何在文档中的“re-admission”查询中突出显示“readmissio”。有一些像 levenshtein 这样的解决方法,但由于检索量很大,这是不切实际的,我希望 lucene 中有一些解决方案可以从查询中找出检索到的数据的位置?请指教。

因为它显示了如何在查询字符串中突出显示“重新入院”概念的“redamissi”部分。???或者在另一个例子中,如果我的查询中有重新接纳,我如何突出显示它以获取“重新接纳”或“接纳”的检索值?

0 投票
2 回答
1420 浏览

lucene - Lucene - 在搜索中使用 * 时荧光笔抛出异常

我正在使用 Lucene 4.6.1 和 Highlighter 4.6.0。由于索引工作正常,我将显示我的搜索代码:

例如:在我的索引中,我得到了许多名为“Process 001”、“Process 002”、“Process 003”等的文档。如果我尝试通过以下方式搜索:流程,我可以检索所有流程(这是完美的!)。当我尝试通过以下方式搜索时会出现问题:proc*,或:pr*,或类似的东西......错误在这里:

异常发生在这一行:

如果我删除荧光笔代码,搜索可以正常工作 *

0 投票
1 回答
110 浏览

solr - 在 Lucene 邻近查询中检索文本

我正在使用 Lucene 来索引一组句子。我的查询有两个“实体”,我创建了一个这样的邻近查询:

我想检索包含这两个实体的所有句子,最大范围为 22 个字符。现在我想使用 Lucene Highlighter 来检索两个实体之间的单词。我正在使用这样的代码将内容拆分为片段,但我不知道如何将片段设置在两个实体之间的精确点。

我的目标是检索实体内的文本,例如:

0 投票
1 回答
742 浏览

lucene - 如何在多个字段上使用 Lucene FastVectorHighlighter?

我有一个基本的搜索工作,我正在使用FastVectorHighlighter. 当您向荧光笔询问“最佳片段”时,您有一些getBestFragment(s)可供选择的重载,记录在这里。我现在用的是最简单的,像这样:

所以我在“描述”字段中突出显示匹配项。然而,我的查询搜索另一个字段“注释”。我如何将其包含在突出显示中?有一个需要 aSet<String> matchedFields和 one的重载String storedField,但我不理解文档。该方法的文档说:

建议所有matchedFields 与storedField 共享相同的源或至少是它的前缀。

这意味着什么?如何索引“notes”和“description”字符串,以及我传递什么matchedFieldsstoredField

0 投票
0 回答
387 浏览

java - 如何从lucene中的搜索中获得段落响应?

我用 lucene 在我的应用程序中创建了一个搜索组件。一切正常,索引,突出显示等。我现在需要返回一个段落作为我的搜索响应,而不仅仅是在 SimpleSpanFragmenter 方法中将结果限制为“fragmentSize”。我的代码中有一部分:

此代码返回我设置为 256 的“MAX_FRAGMENT_LEN”。但这不是我的理想选择。我想在查询中得到一个包含我的搜索词的段落。

0 投票
1 回答
371 浏览

elasticsearch - ElasticSearch 突出显示查询中的匹配部分

我正在向 ElasticSearch 发送匹配查询,并且我正在取回已突出显示匹配字段的文档。我想要做的是将一组文档映射到查询中的匹配子字符串。

例如,假设我使用“快速棕色”进行查询。我想将文档“quick silver”映射到“quick”,将“brown fox”映射到“brown”,将“mr brown”映射到“brown”。

如果文档字段完全包含查询中的单词,这很简单。但是当我使用模糊、同义词、asciifolding 等时,事情会变得一团糟。在这种情况下,搜索结果中突出显示的部分甚至可能不会出现在我的搜索查询中。

是否可以在不复制我的应用程序上的分析器逻辑的情况下完成此任务?

0 投票
1 回答
253 浏览

lucene - Lucene MultiFieldQueryParser 和 Highlighter

我正在通过不同的字段索引 lucene 索引中的文章,即title, description, link,publishDate

我使用MultiFieldQueryParser查询索引,例如

然后我将文章显示为搜索结果。到目前为止一切都很好。现在我想突出显示标题中的搜索文本,描述

我该怎么办?正常的荧光笔在生成片段时会给我NullPointerException 。PostingHighlighter了我一个Map根据字段组合在一起的结果..但我不希望这样。I 是要返回的整个文档,同时突出显示标题和描述中的搜索文本。

任何帮助或建议或代码片段表示赞赏..

0 投票
0 回答
1106 浏览

java - Lucene 5.3 荧光笔 getBestFragments() 不工作

我正在使用以下代码取出检索结果的片段。下面显示的错误出现在使用 getBestFragment() 函数的行。我正在使用 Apache Tomcat 7.0。请帮忙。

错误是

0 投票
1 回答
574 浏览

performance - 如何提高 Lucene Highlighter 操作的性能?

我使用 Lucene.Net 在 C# 中构建了一个搜索/浏览应用程序的原型。源数据是一个中等大小的 5MB XML 文件(包含大约 900 个“文档”),我使用 Lucene 对其进行索引。我的搜索工作正常并且速度非常快。对于这个应用程序,浏览和查看每个“命中”文档很重要,因此用户可以选择一个命中并查看该文档的完整视图(通常适合一半屏幕),我需要在其中突出显示的匹配搜索词看法。我正在使用 WPF 和 MVVM 方法。文档视图当前使用十几个 ContentControls 实现,其中六个用于显示使用 highlightConverter 的可搜索字段。

性能很差,所以我添加了秒表计时来隔离问题。我的模型中的 HighlightSearchTerms 方法似乎是罪魁祸首(大约需要 100-600 毫秒来执行)。如果我将此方法短路以仅返回输入文本,则性能很好。

这是方法:

几年前,我阅读了“Lucene In Action”一书,并再次翻阅了相关部分,看看我是否能得到任何想法。我也在网上搜索了很多。因此,这里有几个问题或可能探索的领域。

  1. 我可以以某种方式省略得分吗?我不需要显示匹配搜索词的上下文,因此我不需要将命中文档分解为片段并为各种片段获取“分数”。我想要按标题显示的命中列表,然后当用户选择一个命中时,整个命中文档都会突出显示。我看到如何使用 NullFragmenter 和 GetBestFragment,但我不知道这是否会使评分操作短路。省略评分会提高性能吗?
  2. 我已经考虑重构我的视图,使其具有一个小部件,用于将命中文档显示为一个 HTML 或 RTF 文本块。这样,我可以只调用一次 highlight 方法,而不是 10 或 15 次(一些 ContentControls 在 ItemsControl 内,因此视图上有一些字段的多个实例)。我预计这将显着提高性能。突出显示将在用表格格式等标记的文本上,但我想这仍然有效?
  3. 还有什么我遗漏的东西使我的突出显示方法如此缓慢吗?半秒似乎太慢了——就像我真的把一些基本的东西搞砸了一样。