问题标签 [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 - 使用 multiValued 中的一个单词匹配来提升 solr 结果
我有某些字段的 solr 架构:
现在我用查询搜索它(其中%s是我的搜索字符串)
q={!boost b=recip(ms(NOW,date),3.16e-11,1,1)}%s&defType=dismax&qf=title^100 note
我需要每条记录的标签之类的东西。
我如何提升该记录的结果,其中一个单词与“标签”字段中的一个值匹配?
更新
刚刚发现,如果我从我的 q 中删除 {!boost b=recip(ms(NOW,date),3.16e-11,1,1)},我的查询将完全按照我的意愿工作。但有了这个它不
更新 2
刚刚想通了,以前的“刚刚想通”是完全错误的。我让它适用于一些搜索字符串,但它对我来说效果不佳。我认为我需要这种行为:
在“标题”和“注释”字段中,我需要使用“AND”搜索单词,但在“标签”字段中,我需要使用“OR”进行搜索。我怎么能用dismax做到这一点?
我现在尝试使用 {!boost} 和查询功能,但没有任何好的结果
mysql - 如何按点击频率对关键字搜索结果进行排序?
我建立了一个搜索索引(两列表),将单个关键字分配给他们的内容 ID。
现在搜索单个关键字可以工作,而且速度非常快。
但是,搜索多个关键字 like
SELECT media_id, keyword FROM search_index WHERE keyword = 'b' OR keyword = 'a'
将返回按关键字字母顺序排列的结果(所有'a'
先点击,然后是'b'
)。
我尝试在结果页面上使用 PHP 执行此操作,但这需要我从数据库加载比我想要显示的更多的数据,以获得可接受的排序。使用该技术,脚本甚至可能在分配更频繁的关键字上超时。
我还尝试GROUP BY
了似乎将结果从字母顺序组合到它们的单个 ID 中。
编辑:最后我发现了类似的东西SELECT DISTINCT media_id, keyword, COUNT(media_id) AS num FROM search_index GROUP BY media_id ORDER BY num DESC
,它工作得很好,但真的很慢。
因此,如果我搜索“b”和“a”,我希望结果中首先出现带有“a”和“b”的 ID。
那么如何告诉 MySQL 按一个 ID 上的命中频率对输出进行排序,同时仍然非常快呢?
tf-idf - 如何使用 TF-IDF 权重对相关性进行排名?
我有一组关键术语,并计算了 TF-IDF 权重以及每个术语的标签频率和术语计数,并保存在数据库中。
给定一个单数项,如何使用这些 DB 值生成一组相关项?
我已经阅读了 TF-IDF 上的 Wikipedia 页面,并使用了许多与余弦相似度、n-gram 算法等有关的 Google 搜索结果。我的强项不是线性代数、IR 或微积分,所以我很难理解这些文件。
我想知道 TF-IDF 权重与相关性的关系。有没有办法对这些值进行排名?我是否需要根据预定义术语的权重对它们进行排名?
既然我有了这些号码,我该如何使用它们?
mysql - MySQL:为什么全文中的分数总是 1?
如果我运行此查询并打印每行的分数,它们始终为 1:
以下是一些示例查询结果:
这是我运行的查询:
lucene.net - Lucene.Net:单词之间距离的相关性
我使用以下代码创建(并经常更新)用户索引(为了演示目的,这里稍微缩短了一点):
存储在索引中的值如下:
UID - 用户 ID(字符串 GUID) GENDER - 性别 ID(字符串“0”(未识别)“1”(男性)或“2”(女性) COUNTRY - 国家代码(字符串例如“US”、“FR”等) CITY - 城市代码(字符串“A121”、“C432”等) USERDATA - 用户详细信息的长字符串(类似于“John Doe j.doe@gmail.com 设计师高等教育5 年经验”) USERINFO - 关于用户的长字符串(类似于“我的名字是 John Doe。我出生......”)
然后我在索引中执行搜索。我会在两个字段(USERDATA 和 USERINFO)中进行搜索,并在必要时按 GENDER、COUNTRY 和 CITY 过滤结果。结果我检索了 UID(我需要这个值来识别数据库中用户记录的 id)。
这是我用于搜索的代码:
除了在使用多个单词时的相关性之外,一切都运行良好:例如,当我搜索(microsoft .net 程序员)时,包含确切子字符串的结果的得分并不高于在文本不同位置包含这些单词的结果。我理解,这是由于简单的事实造成的,即分数计算是基于文本中搜索字符串的百分比因子,而不是字符串重合的准确性。但是如何强制评分算法使资产准确性更有价值呢?即如何强制发现在计算相关性时被认为更重要的单词之间的距离?
search - Solr & Sphinx:如何提高相关性?
Sphinx 的邻近启用排名器使用稍微修改的 BM25 排名器(统计词袋)+ 强烈支持后者的最长词子字符串匹配公式,而 Solr 使用其他一些统计排名函数(不是 BM25,但类似)+如果需要单词二元组,则提升(这类似于 LWS 方法)。我认为这两者都没有模拟人类对相关性的看法,当答案中的单词不一定相邻或顺序相同时,相关性不会从悬崖上掉下来。
简单的例子:
查询:鲍勃·琼斯
身体: 。. . . 琼斯,鲍勃。. . . (看起来与我相关,但这将回退到仅统计)
-或者-
身体: 。. . . 鲍勃中间名琼斯。. . . (相同的)
我知道这样做是有代价的,但我不是唯一一个注意到如果单词乱序或被单词分隔,Solr 和 Sphinx 基本上都会退回到词袋统计排名器,在某些情况下甚至可能是停用词。
想法?如果我想将上述任何一种情况的排名高于单词仅出现在文档中某处的情况怎么办?还是我错了,Solr 或 Sphinx 是否这样做?
mysql - 控制全文搜索相关性分数的小数位数?
我记得以前这样做,但我不记得我是怎么做到的,所以想知道是否有人可以请赐教?
默认情况下,您通常会获得分数14.9236183166504
,例如;我怎样才能将它修剪到只有 2 个小数点或根本没有?
mysql - 从首先返回的全文搜索中获取精确匹配?
例如,我正在使用以下代码:
然而,即使wm
列中存在精确匹配,精确匹配直到第 8 个结果才会出现。前面的也都有这句话,还有一些后面的文字。我检查了locn
,gns
字段,看看它们是如何比较的,没有什么特别突出的东西可以让其他人得分更高。
我做了一些关于使用的阅读,BOOLEAN MODE
但我在那里读到的任何内容似乎都没有帮助我的需求。
mysql - php mysql全文搜索顺序按相关性
如何按相关性制作php全文搜索顺序?
我想设置相关性,首先应该匹配col1, col2
然后匹配col3
,如果匹配完成更多的单词col1, col2
,然后交col3
。
也许我应该设置一个百分比,比如col1, col2
66% 的相关性和col3
34% 的相关性......
java - 关于我可以使用哪些网页元信息来对某个主题的页面相关性进行分类的任何想法?
我正在做一个算法来分类页面的相关性,比如“电影”,尽可能使用所有元信息,但不包括正文的文本内容。
我想知道我可以使用什么来确定页面是否包含有关主题的一些信息。
目前,我给标题的重要性为 40%,域后的链接为 30%,域为 20%,元关键字为 10%,但我认为我可以使用更多的东西来获得更多精确的。我正在匹配一些带有权重的单词来计算页面的相关性。
关于我还可以使用什么来计算相关性的任何想法?我只想排除 HTML 本身内部的文本内容,但可以使用 HTML 结构。