问题标签 [solr-boost]

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

drupal - 从 Drupal 发送请求时如何使用 Solr 处理程序

我正在使用 Solr 4.10.2 和 Drupal 7.X,我有运行 Apache Solr 模块框架并将请求从 Drupal 发送到 Solr。目前,当我们执行搜索时,Drupal 会构建查询并将其发送到 Solr。Solr 只是执行查询并返回结果,而不使用可以通过 SolrConfig.xml 配置的内部处理程序。

我想知道是否有一种方法可以从 Drupal 发送搜索到的术语(不构建查询)并让 Solr 使用 SolrConfig.xml 中声明的内部处理程序来处理请求、构建查询然后返回数据?

这样做的原因是我们一直在努力通过更改某些字段的“权重”来尝试在执行搜索时(我们希望首先精确匹配和模糊搜索结果之后)来提升一些结果。

我们知道从后台我们可以使用“偏差”功能来提升一些领域,但这对于我们想要实现的目标来说太有限了。

我们还知道我们可以使用hook_apachesolr_modify_query()直接从代码端更改从 Drupal 发送的查询,但我们更喜欢更改尽可能少的代码并使用我们已经配置为根据需要返回结果的 SolrConfig.xml /handlers。

0 投票
1 回答
1613 浏览

elasticsearch - Elasticsearch - boost nested query with higher value

I have a query (well a part of it - rest is unimportant like pagination):

It's for searching profile, which has a skill "PHP" with value 2 or more. User can search for multiple skills=>values pair. It's working fine, but I have one question:

How to make a little boost for matched skills which has higher skills.value, just to make person with PHP value 3 be higher in search results than someone with PHP 2 even if both are correct match.

0 投票
0 回答
174 浏览

elasticsearch - 如何检测具有人气计数的趋势项目?

我用elasticsearch制作了一个搜索应用程序。项目有名称和追随者数量。我使用追随者数量来提升弹性搜索结果。

例如:假设我有两个项目。item_1 = [name = "abc def",追随者 = 1000] 和 item_2 = [name = "abc",追随者 = 10]。

因此,当用户搜索“abc”时,即使 item_2 完全匹配,我也会将 item_1 作为最可能的结果。这对我来说很好。但我想为此添加新功能。

我希望能够检测到流行的项目并提高他们的分数。

所以,我想如果我每天存储关注者数量一周或一个月。喜欢;

因此,如果项目 1、2、3 和 4 的每日追随者数量像这样增加。那么,我应该能够检测到项目 2 的追随者数量的增加,并将其提高到项目 1。因为,即使项目 1 有更多的追随者,第 2 项每天都有更多的追随者。但是,第 3 项不应超过第 4 项,因为第 3 项的增加百分比非常小。

底线,我希望能够检测到越来越受欢迎,但它应该基于增加百分比。

那么,您对此有什么建议吗?或者你能参考任何帮助我解决这个问题的论文吗?

0 投票
2 回答
730 浏览

solr-boost - 使用默认查询时如何在 solrnet 中使用 boosting?

我正在使用 SolrNet 对我的默认搜索字段而不是任何特定字段进行查询。在这种情况下,如何在特定字段上使用 Boost?下面是代码片段。

列表过滤器 = BuildQuerySingleLine(arrParams);

0 投票
0 回答
70 浏览

search - Solr 结果与查询过滤器提升的相关性

我们已经为我们的项目实施了站点搜索。Nutch 用于抓取网站的内容。目前,我们在 SOLR 中抓取和索引了所有记录,搜索功能适用于任何关键字搜索。我们面临的问题是搜索结果相关性,我们无法对字段执行提升并显示结果。

例如,我们正在索引字段标题、描述、关键字、URL 和内容。当我搜索任何关键字“XYZ”时,所有具有该关键字的记录都会根据词频显示。但是,当我提高查询过滤器中的字段标题时 - a. 标题^5 - 显示标题中包含关键字的搜索结果,但不选择内容中包含“XYZ”的记录。湾。标题^5 内容^1.1 - 在这种情况下,搜索结果不会根据标题相关性显示,并且会记录默认的词频行为。

0 投票
0 回答
338 浏览

sorting - solr 中的随机排序,提升到特定字段

我想随机排序文档,但优先考虑特定字段。我尝试使用 RandomSortField 字段类型的动态随机字段

但是排序忽略了得分,提升因子在我的情况下变得无关紧要。

使用多个条件进行排序也不起作用。sort=random_82423 asc,rating desc 提前致谢。

0 投票
1 回答
305 浏览

solr - Solr 分数提升 - 基于喜欢的数量

fs_votingapi_result在 solr 文档中添加了这表示喜欢的数量。

我发现下面的函数可以根据fs_votingapi_result.

但我无法理解这背后的逻辑——额外的参数$vote_steepness, $total, $total, 是$vote_boost什么?

我是 solr 的新手,我无法找到任何文档/文章来了解更多关于此的信息。

0 投票
1 回答
539 浏览

elasticsearch - 在弹性搜索中操纵分数

当我在 elasticsearch 上进行搜索时,我想操纵我得到的分数。我已经使用了 boost 选项,但它并没有给我想要的结果。经过一番阅读,我认为 function_score 查询是我的问题的解决方案。我了解它是如何工作的,但我不知道如何更改当前查询以将其与 function_score 查询一起使用。

如您所见,我们有四种匹配项。

  • Boost 2:当名称完全匹配时
  • Boost 1.9:当标签上有完全匹配时
  • Boost 0.2:当名称匹配但一个字符写错时
  • Boost 0.1:当额外(描述)字段中有匹配项时

我面临的问题是一个字符写错并且没有标记得分高于正确标记和整个单词写错的匹配。那应该是另一种方式...

任何帮助,将不胜感激 :)

0 投票
1 回答
640 浏览

solr - 根据搜索词和文档类型提高 SOLR 结果分数

我的 SME 有一条关于 SOLR 搜索相关性的规则。它是这样的。

当“XX”、“YY”或“ZZ”出现在用户的搜索词中时,大幅提升结果中的文档类型“MMMM”。(但只有那时,这意味着我不能对我认为的文档本身进行加权。)

我可以想象构建一个“查询预处理器”来检查指定术语“XX”等的存在,然后将它们插入到一个预先构建的查询中,从而大大提升 document_type “MMMM”。

这对我来说感觉有点笨拙。在代码中执行此操作并处理来自两个规则的术语在搜索中的“联合”情况听起来不像我想要维护的东西。

我想知道是否有办法利用 SOLR 来做到这一点?首先想到的是在预处理数据以进入 SOLR 时,将那些特定的搜索词“XX”等放入任何文档类型“MMMM”中。

只是将它们扔到文档的文本中可能不会改变太多的权重 - 特别是如果该术语在其他文档中不是该文档类型的一部分 - 在我看来,这表明所有文档上都有一个“important_abbreviations”字段和在所有查询中包含对该通用字段的提升的“标准”做法。我这么说是因为我不记得曾经见过一种方法来提升文档中的特定字段,除非在查询中。

我想知道是否还有其他人解决了这个问题,如果是,如何解决——因为这两个对我来说都感觉有点笨拙。

0 投票
0 回答
713 浏览

solr-boost - Apache Solr:索引时间字段提升

我正在使用 Solr 和 edismax 解析器搜索产品数据库,我想让某些领域的命中比其他领域的命中更重要。假设每个产品都有一个名称和一个简短描述,还有其他可能是动态的字段。应该搜索所有字段,但nameshort_description应该比其他字段更重要(或更少)。

我知道这可以在查询时使用qf参数(文档)来完成。我可以看到它有效。根据提供的字段,文档被完美地上下评分。

问题是我显然需要提及所有要搜索的字段,而其他字段可能是动态的。也许我可以以某种方式获取所有相关字段并发送它们,但我更喜欢索引时的解决方案。

我有点继承了这个代码,代码现在正在做的是将以下 JSON 发送到索引:

我希望short_description中的命中值会增加 3,名称中的命中值会增加 0.3,即与其他所有内容相比得分(默认文档值 1)。

发生的情况是名称命中的文档与short_description命中的文档得分相同。

(搜索魔多

我发现这个文件说:

如果您在每个文档上都设置索引时间字段提升,那么它们将毫无价值。

这就是它不起作用的原因吗?还是我做错了什么?如果它不能那样工作,有没有办法在查询时将通配符输入到qf参数中(即qf=name^3 short_description^0.3 *)?