问题标签 [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.
solr - 根据包含命中的字段提升 Solr 结果
我在浏览网页寻找索引和搜索框架时偶然发现了 Solr。我们绝对需要的一个功能是根据包含命中的字段来提升结果。
一个小例子:
考虑这样的记录:
例如,我想将title
,alternative_title
和plot
字段组合成一个搜索字段,这在查看 Solr/Lucene 文档和教程后并不难。
但是,我也希望获得成功的电影title
的得分高于热门电影,而那些电影的得分alternative_title
应该高于该plot
领域的热门电影。
有什么方法可以在 XML 中表示这种评分,还是我们需要开发一些自定义评分算法?
另请注意,我给出的示例是虚构的,真实数据可能包含 100 多个字段。
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
:
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 传递了一个查询字符串?如果不能,有没有其他方法可以解决这个问题?
提前致谢!
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 ...
任何帮助,将不胜感激。谢谢!
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} 和查询功能,但没有任何好的结果
boost - 配置 dismax requesthandlar 以提升字段
我想申请提升搜索。我希望如果查询词同时出现在描述中,名称比在描述字段中具有查询词的文档在搜索结果中排名靠前。为此,我将 dismax 请求处理程序配置为:
但我在搜索结果中没有发现任何影响。我需要做更多的配置才能看到效果。
solr - SolrNet:在索引时指定 Boost 值的正确方法是什么?
我将索引 Boost 值从 1 到 10 的文档。一种方法是简单地使用 AddWithBoost( doc , boostvalue )。但这是正确的方法吗?我是否需要将比例(1 - 10)转换为其他范围,以确保提升值为 10 的文档在某些查询中的排名高于值为 9 的文档?我想我正在寻找的是使用 Boost 的标准方式。
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 是实现这一目标的正确工具吗?
solr - Solr - 它是如何工作的?
我是 Solr 的新手。使用 Solr 1.4.1
我有一个包含以下字段的 schema.xml:
我需要更加重视“job_title”字段。例如,如果我正在搜索“程序员”这个词,我需要首先显示“job_title”字段中按日期排序的“程序员”的结果,然后是“程序员”这个词的结果“job_description”字段。
用户可以按日期订购并一起提升吗?
请给我一些线索,说明我需要注意什么。
此致,
search - SOLR - 对“EXTRA”单词较少的较小文档进行更好的排名
我的 SOLR 文档是葡萄酒实体。当用户搜索关键字“Haut Bailly”(这是来自波尔多的葡萄酒)时,我想首先获得一个标题长度较短的匹配文档,例如:
- "Château Haut-Bailly - Pessac-Léognan"
- "Château Haut-Bailly La Parde de Haut Bailly - Pessac-Léognan"
然而,对于默认的 solr 查询,关键字“haut bailly”会返回以下排名:
- "Château Haut-Bailly La Parde de Haut Bailly - Pessac-Léognan"
- "Château Haut-Bailly - Pessac-Léognan"
有没有我可以使用的参数来增加更接近短语搜索(就长度而言)和更短字段(这里是标题)的匹配分数?所以在这里正确的葡萄酒(“Château Haut-Bailly - Pessac-Léognan”)出现在排名中?
谢谢!