问题标签 [relevance]
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.
solr - Solr:QueryElevationComponent 需要 StrField uniqueKeyField 错误
我最近安装了 solr。示例索引(在 apache-solr-#.#.#\example\solr 中找到)似乎有效,并且一旦复制到我的 solr 主目录,我就可以通过管理页面访问它。但是,当我尝试通过将 schema.xml 内容替换为(取自此处)来实现新索引时:
我收到一个配置错误,这似乎表明必须使用 StrField 类型来实现 uniqueKeyField(我很难相信实际上是这种情况?)):
“HTTP 状态 500 - solr 配置中的严重错误。... org.apache.solr.common.SolrException:QueryElevationComponent 要求架构具有使用 StrField 在 org.apache.solr.handler.component.QueryElevationComponent.inform 实现的 uniqueKeyField( QueryElevationComponent.java:157) 在 org.apache.solr.core.SolrResourceLoader.inform(SolrResourceLoader.java:508) 在..."
我的谷歌搜索几乎没有帮助,所以我希望这里可能有人可能遇到过这个问题和/或有一些想法如何解决它?
提前感谢您的任何建议,Bea。
php - 搜索引擎如何找到相关内容?
Google 在解析网络时如何找到相关内容?
例如,假设 Google 使用 PHP 原生 DOM 库来解析内容。他们会用什么方法在网页上找到最相关的内容?
我的想法是它会搜索所有段落,按每个段落的长度排序,然后从可能的搜索字符串和查询参数中计算出每个段落的相关百分比。
假设我们有这个 URL:
现在从那个 URL 我会发现 HTML 文件名将是高度相关的,所以我会看到该字符串与页面中的所有段落相比有多接近!
当你分享一个页面时,Facebook 分享就是一个很好的例子。Facebook 迅速对链接进行 bot 处理并带回图像、内容等。
我在想某种计算方法是最好的,根据周围元素和元数据计算出相关性的百分比。
是否有任何关于内容解析最佳实践的书籍/信息,涵盖如何从站点获取最佳内容、可能讨论的任何算法或任何深入的回复?
我想到的一些想法是:
- 查找所有段落并按纯文本长度排序
- 不知何故找到容器的宽度和高度
div
并按 (W+H) 排序 - @Benoit - 检查段落中的元关键字、标题、描述并检查相关性
- 查找所有图像标签并按最大和远离主要段落的节点长度排序
- 检查对象数据,例如视频并计算最大段落/内容 div 中的节点
- 找出之前解析的页面的相似之处
我需要这些信息的原因:
我正在建立一个网站,网站管理员向我们发送链接,然后我们列出他们的页面,但我希望网站管理员提交一个链接,然后我去爬取该页面以查找以下信息。
- 图片(如果适用)
- 来自最佳文本片段的 < 255 段
- 将用于我们的搜索引擎的关键字,(Stack Overflow 风格)
- 元数据关键字、描述、所有图像、更改日志(用于审核和管理目的)
希望你们能理解这不是针对搜索引擎的,但搜索引擎处理内容发现的方式与我需要它的上下文相同。
我不是在问商业秘密,我问的是你个人对此的处理方式。
algorithm - 谁能指出我的内容相关性算法?
我的办公桌上出现了一个具有一些有趣要求的新项目。我需要开发一个可搜索的企业目录,重点是根据任意搜索查询提供相关结果。业务可以是任何利基市场;没有一个领域比另一个领域更具代表性。
在搜索“搜索算法”或“内容相关性算法”之类的内容时,我得到的只是对 Google 的“上古之神的神秘算法”和 SEO 公司的引用。
MySQL的全文Match()
功能的相关性值是否有它所需要的任务?我从未使用过它,但我肯定会做一些测试。此外,由于这将主要是一个人工编辑的目录,我可以假设我们可以添加加权因子,如标记和类别。将这些因素与 MySQL 的Match()
相关性结合起来的好方法是什么?
我也对我在这里没有讨论过的想法持开放态度。
terminology - 将文档中的文本频率与语料库中的频率进行比较
我想分析文档中的字母、二元组、单词等项目,并将它们在我的文档中的频率与它们在大型文档语料库中的频率进行比较。
这个想法是,诸如“if”、“and”、“the”之类的词在所有文档中都很常见,但在本文档中,某些词会比语料库中的典型词更常见。
这应该是很标准的。这叫什么?这样做很明显,我总是在我的文档中遇到新词的问题,但在语料库评级中却没有无限重要。这是如何处理的?
apache - Apache Lucene:相关性分数总是在 0 和 1 之间吗?
问候,
我有以下 Apache Lucene 片段,它给了我一些不错的结果:
我想知道, hits[i].score 总是在 0 和 1 之间吗?好像是这样,但我不能确定。我什至检查了 Lucene 文档(类 ScoreDocs),但无济于事。您会看到我正在计算基于 hits[i].score 的“newRelevance”值的日志。我需要 hits[i].score 介于 0 和 1 之间,因为如果它低于零,我会得到一个错误;大于 1,符号将从负变为正。
我希望那里的一些 Lucene 专家可以为我提供一些见解。
非常感谢,
mysql - 在mysql全文搜索中给一些字段更多的相关性和相关性排序
我在帖子表中有两个字段 - post_title和post_content。现在我使用标准的全文搜索来匹配两个字段的一些关键字。我需要让标题字段比内容字段更相关,而不是按相关性对结果进行排序......
实现这个目标的 mysql 语法是什么样的?我使用 mysql 5.1
algorithm - 返回文本之间的亲和力的函数?
考虑我有一个
我有一些次要关键字
我需要一个函数来返回文本和关键字之间的亲和力。例子:
请注意 5 和 4 只是示例。
你可以说 - 编写一个计算出现次数的函数 - 但对于这个例子,这不起作用,因为两者都出现了 2 次,但 compare1 不太相关,因为在 string1 中没有完全找到“hello night”(hello 和 night 这两个词是比你好你好)
有没有已知的算法可以做到这一点?
添加1:
在这种情况下,像编辑距离这样的算法将不起作用。因为 string1 是一个完整的文本(如 300-400 个单词),并且比较字符串最多为 4-5 个单词。
javascript - 具有多个参数的客户端预测搜索相关性计算
我正在编写一个预测搜索,对于服务器性能要求(所有内容都已缓存),必须在客户端浏览器上运行。这些项目是电视节目和电影,并与标题、演员和导演姓名相匹配。执行搜索后,它会返回一个匹配项列表,每个结果有两个值:
匹配词数(n):用户可以输入 4 个词,但其中只有 2 个词匹配一个项目。越多越好。
Levenshtein 编辑距离添加(ld)。用户可以键入 3 个单词,但其中 2 个单词与索引的单词有拼写错误或其他小的差异。我使用编辑距离来查找最近的索引词。所有 Levenshtein 距离的相加作为邻近指标返回。越少越好。
要求
客户端。没有 Sphinx、Lucene 或任何其他服务器端解决方案。
速度超过准确性。该算法在每次击键时运行,我们不想让用户感到厌烦。保持大O不要那么大。
非递归的。每个项目相关性的计算不应依赖于其他项目的计算。我不想打败谷歌,只提供一个小集合中最好的结果。
有界形式 0 到 1、0 到 100 或类似的东西。不是必需的,但能够显示“相关百分比”是加分项。
想法优于实现。我正在寻找比特定实现更好的算法/公式。
我的方法
基于指数衰减(如放射性半衰期分解),我提出了这个公式。
在哪里:
T
是用户提供的字数。n
是匹配词的数量。ld
是这个匹配词的 Levenshtein 距离加法。
在伪代码中。
一点解释:
-ld * 1/n
是相关性度量的核心。如果ld
低且n
大,则接近于零(-0 侧),表明该结果更相关。n/T
是准确率。匹配词与所有词。通过考虑总用户输入来优化先前的相关性。
对于负幂,指数函数将结果限制在 0 和 1 之间。
最后,问题
我想要的不是基于此响应并通过额外的编辑距离计算来改进搜索算法,而是通过为每个元素分配一个相关性值来改进返回元素的相关性排序。n
如果需要和以外的任何参数ld
并且易于计算,则可以使用。在我的解决方案中,我添加T
了用户提供的字数。
php - 如何根据单词优先级的相关性对mysql搜索结果进行排序
可能的重复:
PHP MySQL 搜索和按相关性排序
你好,
我有一个包含多个列的表,其中包含名称、地址、公司等字段。假设有人搜索“microsoft john”。我希望首先出现包含“microsoft”的结果,然后是包含 john. 如果查询是“john microsoft”,反之亦然
我的PHP代码是:
问题是 MYSQL 是按 id 排序结果...这很有趣,因为一些更高价值的结果可能会卡在堆栈的深处。顺便说一句,phpmyadmin 搜索也有同样的缺陷。
请建议。
php - 如何使mysql在全文搜索中自动加粗匹配单词
我试图在标题本身中准确解释我的问题。我可以将查询中的匹配词包围吗在mysql查询本身?MySQL查询是:
select id, FirstName,LastName,addcomments WHERE MATCH (FirstName,LastName,addcomments) AGAINST ('some sample text' WITH QUERY EXPANSION)
mysql的结果应该是这样的:
任何帮助将不胜感激