问题标签 [morelikethis]

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 投票
0 回答
624 浏览

c# - 如何进行 Lucene (.net) 更像是搜索完整文档与特定字段?

我有一个文档,它是一个文本文件中的 100 家公司的列表。它在 lucene 中被索引。它本身不存储,但向量被保存。名单中的一家公司名为 Apple Inc.。

还有另一个标题为“Apple Inc”的文档存储在 lucene 中。

我可以使用下面的代码成功地进行更像这样的搜索。我可以在 Lucene 中找到该文档,并成功地在标题和内容字段上执行搜索以找到类似的文档。

我的问题是,如何修改此代码,以便我可以找到标题中包含此内容的其他文档。即我如何调出带有 Title Apple 的文档。

我想搜索所选文档的内容与特定字段(例如标题);

0 投票
1 回答
182 浏览

lucene - 如何在 Elasticsearch 中始终推荐不同的文档(文件)

我有一项服务可以推荐与用户当前上下文相关的文档(文件)。它结合使用 ElasticSearch more_like_this 和过滤器(参见下面的查询)。这些文件由用户上传,如果是公开的,则可以推荐给其他用户。它工作正常,但是当两个或多个用户上传相同的文件时会出现问题。elasticsearch 中有两个或多个相同文档的实例,很可能会推荐这两个(甚至更多)文件。

有谁知道我如何强制 ElasticSearch 忽略这些重复项并仅返回同一文件的一个实例?

编辑:

我解决了这个问题的第一部分。我正在使用 Tika 从网页或文本文档中提取内容。然后,我在 More Like This 查询中使用它作为类似文本来查找最相似的文档,并且那些值高于 0.9 的文档被标记为重复。为此,我使用了一个具有 UUID 值的新字段“唯一性”。如果要索引的新文档是重复的,我将复制其“唯一性”值,如果没有重复,我将为该文档创建新值“唯一性”。

但是,我仍然没有解决的问题的第二部分是如何进行查询以消除这些重复项。所以基本上在上面提到的查询中,我必须整合部分,只选择一个具有相同字段“唯一性”值的文档实例。

有人知道如何解决这个问题吗?

0 投票
1 回答
580 浏览

apache - Solr:在 MoreLikeThis (MLT) 处理程序中合并距离

我正在尝试使用 SOLR 创建一个推荐器,匹配一个名为标题的文本字段。我希望它根据(标题字段上的文档相似性)/(到点的地理空间距离)返回匹配项。因此,这些建议应该考虑到与我匹配的文档的文本相似性和地理空间距离,优先考虑在地理上相似且靠近的文档。我尝试使用 mlt.fl 和 mlt.qf 处理程序执行此操作:

然而这不起作用,距离似乎完全被忽略了。有没有办法做到这一点?还是我需要编写查询来生成推荐文档?

0 投票
1 回答
364 浏览

lucene - 比较相同的文档时,MoreLikeThis 在 Lucene.Net 中没有返回 100% 的得分率

我不知道我是否正确调用了 Lucene.net。我正在尝试调用 MoreLikeThis 函数将文档与自身进行比较,但我只得到 0.3174651 的分数,我认为我应该得到 1.0 的分数。我期待错误的期待吗?

这是我的代码:

请问我做错了吗?

0 投票
1 回答
62 浏览

java - 如何让Lucene 的retrieveTerms 工作?

我正在尝试利用http://svn.apache.org/repos/asf/lucene/dev/trunk/lucene/queries/src/java/org/apache/lucene/queries/mlt/MoreLikeThis 中的 retrieveTerms 方法。 java,我在下一行遇到了 NullPointerException

我不完全知道为什么会这样,所以任何解释都会很棒。为了清楚起见,我将在下面发布整个方法,以及 ir 的早期声明。

}

0 投票
1 回答
264 浏览

java - 为什么 getTermVectors 总是返回 null?

所以我试图对索引进行一些术语向量分析,但是当我运行 getTermVectors 时,我总是得到空值。我的索引是使用以下属性创建的。

稍后,当我想获取向量时,我运行以下代码

并且向量最终在整个循环中为空。我在某个地方犯了一个愚蠢的错误吗?任何帮助将不胜感激!

0 投票
1 回答
103 浏览

java - 您将如何动态过滤 Lucene 的 MoreLikeThis?

好的,让我试着解释一下我做了什么,然后希望我的要求会更清楚。尽管在整个索引中并不常见,但我正在分析文档并尝试根据某些文档中经常出现的单词对它们进行评分。到目前为止,我已经得到了一些非常有趣的结果,并且能够看到给定文档中每个术语的 tf 和 idf。

为了对整个文档进行评分,我想做一些与 tf-idf 相关的事情,但我不想使用文档中的每个术语。现在,我已经对一些过滤器进行了硬编码,以去除过于常见的单词(idf 对我来说太低的单词)和过于不常见的单词(idf 分数非常高的单词;根据我的经验,它们通常是拼写错误)。

有没有一种动态过滤 idf 异常值的好方法?
代替:

我想做类似的事情:

也许这是最好的方法,但我想听听您可能提出的任何其他解决方案,谢谢!

0 投票
1 回答
26 浏览

java - 您如何使用 Lucene 找到一个短语?

我希望我提出问题的方式是正确的,尽管我可能会弄错。基本上,我有一个包含术语向量、位置和偏移量的索引,并且我希望能够执行以下操作:当我看到“do”这个词时,检查下一个词是否是“you”。如果是这样,出于评分的目的,将这两个词视为一个短语。我这样做是为了避免将通常一起使用的单词分开。而不是我的按分数排序的单词列表看起来像这样,

我想看到更多这样的东西

0 投票
1 回答
651 浏览

solr - 更像这样并没有给出预期的结果

我正在实施一个更像这个处理程序的 solr 来寻找类似的客户。

我有 2 个客户,他们的名字不同,住在同一个地址。我想给 solr 一个 entity_id 并让所有具有相似名称/地址的客户端返回。客户将能够通过单击按钮将两个客户链接在一起。

我正在使用 SolariumBundle 在代码中执行此操作,但它应该足以让它首先与原始查询一起工作,如果可行的话,我可以自己将其调整到日光浴室。

这是我的solrconfig.xml

我的schema.xml的相关部分是:

我目前执行此查询:http://localhost:8983/solr/core0/mlt?q=entity_id%3A50&wt=json&indent=true&mlt.fl:customer_data并且确实为具有相似名称的客户返回结果。例如,如果 customer_id:50(我要查询的那个)的名称为“Foo Bar”,它会返回名称为“Foo Bar”、“Bar Foo”、“John Foo”的客户。街道/国家/邮政编码的相似性不起作用。

在 debug:parsedquery 中,我可以看到customer_data:Foo customer_data:Bar customer_data oo Bar, ...地址部分的不同突变,但没有任何变化。

如何确保查询是针对:customer_data:Foo customer_data:Bar customer_data:teststreet customer_data:Antwerp

0 投票
1 回答
86 浏览

solr - 在 Solr MLT 组件中,我们能否找到 Solr MLT 返回特定文件的原因?

我想使用 Solr MLT。我想知道为什么 Solr MLt 返回特定文档以供我搜索。例如,如果返回一些文档,则应该有一些与父文档匹配的单词或短语。Solr 中是否有办法检索这些单词/短语,因为 MLT 会返回父级的相似文档?