问题标签 [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 投票
3 回答
10725 浏览

solr - 根据包含命中的字段提升 Solr 结果

我在浏览网页寻找索引和搜索框架时偶然发现了 Solr。我们绝对需要的一个功能是根据包含命中的字段来提升结果。

一个小例子:

考虑这样的记录:

例如,我想将title,alternative_titleplot字段组合成一个搜索字段,这在查看 Solr/Lucene 文档和教程后并不难。
但是,我也希望获得成功的电影title的得分高于热门电影,而那些电影的得分alternative_title应该高于该plot领域的热门电影。
有什么方法可以在 XML 中表示这种评分,还是我们需要开发一些自定义评分算法?

另请注意,我给出的示例是虚构的,真实数据可能包含 100 多个字段。

0 投票
2 回答
4734 浏览

solr - Solr:每个文档的 fieldNorm 不同,没有文档提升

我希望我的搜索结果按分数排序,他们正在这样做,但分数计算不正确。也就是说,不一定不正确,但与预期不同,我不确定为什么。我的目标是删除任何改变分数的东西。

如果我在两个对象上执行匹配的搜索(其中 ObjectA 的得分应该高于 ObjectB),则首先返回 ObjectB。

假设对于这个例子,我的查询是一个词:“apples”。

ObjectA 的标题:“apples are apples”(2/3 词条)
ObjectA 的描述:“原来有苹果在苹果-苹果中,现在苹果变成了所有的苹果!” (6/18 词)
ObjectB 的标题:“苹果很棒”(1/3 词)
ObjectB 的描述:“苹果房里有苹果,现在苹果全都坏了!” (4/18 学期)

标题字段没有提升(或者更确切地说,提升 1),描述字段提升 0.8。我没有通过 solrconfig.xml 或通过我正在传递的查询指定文档提升。如果有另一种指定文档提升的方法,那么我可能会错过一个。

在分析explain打印输出后,看起来 ObjectA正确计算了比 ObjectB 更高的分数,就像我想要的一样,除了一个区别:ObjectB 的标题 fieldNorm 总是高于 ObjectA。


下面是explain打印输出。只是让您知道:标题字段是mditem5_tns,描述字段是mditem7_tns

0 投票
2 回答
3418 浏览

solr - 如何在 Solr 中进行恒定分数查询

我正在使用 SolrNet 访问 Solr 索引,其中有一个名为“tags”的多值字段。我想执行以下伪代码查询:

(tags:stack)^10 OR (tags:over)^5 OR (tags:flow)^2

其中术语“stack”被提升了 10,“over”被提升了 5,“flow”被提升了 2。我想要的结果是“stack”的结果会比“stack”的结果更高流”等。

我遇到的问题是说“流”只出现在几个文档中,但“堆栈”出现在负载中,然后由于高 idf 值,带有“流”的文档出现在带有“堆栈”的文档之上。

当这个项目直接在 Lucene 中实现时,我使用了 ConstantScoreQuery,这些消除了仅基于 boost 值的分数的 idf。

如何使用 Solr 和 SolrNet 来实现这一点,我实际上只是向 Solr 传递了一个查询字符串?如果不能,有没有其他方法可以解决这个问题?

提前致谢!

0 投票
3 回答
3404 浏览

solr - 如何通过 geodist() 的倒数来提高 Solr 相关性分数

所以我已经实现并成功使用了 Solr 4。我不得不说 Solr 4 太棒了!无论如何,我成功地按距离排序并使用地理过滤器将结果限制在某个区域。我现在想做的是通过距离的倒数来提高相关性分数。这个页面讨论了它,但没有说明如何去做(http://wiki.apache.org/solr/SpatialSearch)

我尝试了以下方法,但它给了我一个错误:

http://localhost:8983/solr/select/?q={!boost b=recip(geodist(), 1, 1000, 1000)}...

我得到的错误是:

org.apache.lucene.queryParser.ParseException: Expected identifier at pos 27 str='{!boost b=recip(geodist(), 1, 10 in ...

任何帮助,将不胜感激。谢谢!

0 投票
2 回答
1360 浏览

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} 和查询功能,但没有任何好的结果

0 投票
0 回答
774 浏览

boost - 配置 dismax requesthandlar 以提升字段

我想申请提升搜索。我希望如果查询词同时出现在描述中,名称比在描述字段中具有查询词的文档在搜索结果中排名靠前。为此,我将 dismax 请求处理程序配置为:

但我在搜索结果中没有发现任何影响。我需要做更多的配置才能看到效果。

0 投票
1 回答
1110 浏览

solr - SolrNet:在索引时指定 Boost 值的正确方法是什么?

我将索引 Boost 值从 1 到 10 的文档。一种方法是简单地使用 AddWithBoost( doc , boostvalue )。但这是正确的方法吗?我是否需要将比例(1 - 10)转换为其他范围,以确保提升值为 10 的文档在某些查询中的排名高于值为 9 的文档?我想我正在寻找的是使用 Boost 的标准方式。

0 投票
2 回答
2560 浏览

django - Django Haystack - 如何提升领域?

我在 Django Haystack 1.2.5 中遇到了一些问题。我需要提升一个领域,但显然它不起作用。我正在使用 Solr 1.4.1。

我的索引:

我在 job_title "boost=1.50" 中,但这显然不起作用,这是 Solr 生成的:

我正在做的查询是这个:

有人可以告诉我我需要什么来让 Haystack Boost 工作吗?

此致,


更新 1:我需要更加重视“job_title”字段。例如,如果我正在搜索“programmer”这个词,我需要首先显示“job_title”字段中按日期排序的“programmer”的结果,然后显示“programmer”这个词的结果“job_description”字段。Haystack boost 是实现这一目标的正确工具吗?

0 投票
1 回答
1679 浏览

solr - Solr - 它是如何工作的?

我是 Solr 的新手。使用 Solr 1.4.1

我有一个包含以下字段的 schema.xml:

我需要更加重视“job_title”字段。例如,如果我正在搜索“程序员”这个词,我需要首先显示“job_title”字段中按日期排序的“程序员”的结果,然后是“程序员”这个词的结果“job_description”字段。

用户可以按日期订购并一起提升吗?

请给我一些线索,说明我需要注意什么。

此致,

0 投票
2 回答
373 浏览

search - SOLR - 对“EXTRA”单词较少的较小文档进行更好的排名

我的 SOLR 文档是葡萄酒实体。当用户搜索关键字“Haut Bailly”(这是来自波尔多的葡萄酒)时,我想首先获得一个标题长度较短的匹配文档,例如:

  1. "Château Haut-Bailly - Pessac-Léognan"
  2. "Château Haut-Bailly La Parde de Haut Bailly - Pessac-Léognan"

然而,对于默认的 solr 查询,关键字“haut bailly”会返回以下排名:

  1. "Château Haut-Bailly La Parde de Haut Bailly - Pessac-Léognan"
  2. "Château Haut-Bailly - Pessac-Léognan"

有没有我可以使用的参数来增加更接近短语搜索(就长度而言)和更短字段(这里是标题)的匹配分数?所以在这里正确的葡萄酒(“Château Haut-Bailly - Pessac-Léognan”)出现在排名中?

谢谢!