问题标签 [dismax]

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 投票
2 回答
2429 浏览

solr - Dismax 请求处理程序

我正在使用 solr 按名称搜索一组数据(例如“Dan”或“Joe Smith”)。我想以另一个索引字段 double_score(例如 10.0 或 72.3)指定的顺序返回查询指定的结果(编辑:末尾带有通配符)。我目前有以下根本无法工作:

如果我删除评论,那么搜索确实有效,我所做的任何查询都会被 q.alt 替换,然后由 double_score 的值提升。如果这没有取代 q.alt,这将是预期的效果。

另请注意,虽然我还没有深入研究更有趣的可能性,例如标记名称,但我确实计划这样做。因此,任何可能的建议/解决方案都不应该排除这一点。

0 投票
1 回答
2675 浏览

apache - Solr dismax boost查询不起作用

我的 solr 索引中存储了一些视频标题。我根据标题进行查询,但希望通过评分来影响分数。评级是典型的 5 星评级。此评级与视频一起存储在 solr 中。我尝试使用 dismax 请求处理程序,但看起来 solr 没有提升值。

你可以在下面看到我的 requestHandler:

希望有人可以帮助我!

我用调试运行查询,这是调试的输出。在分数计算中看不到评分字段...

0.99999994 = queryWeight(title:test), product of: 4.4294653 = idf(docFreq=26876, maxDocs=829428) 0.22576088 = queryNorm 4.4294653 = (MATCH) fieldWeight(title:test in 1894), product of: 1.0 = tf(termFreq(标题:测试)=1)4.4294653 = idf(docFreq=26876,maxDocs=829428)1.0 = fieldNorm(字段=标题,doc=1894)

更多调试信息:

0 投票
2 回答
34181 浏览

solr - 如何提升 solr 中的字段

我已经事先确定了提升。我在 solr 索引中有一个名为boost1. 此提升字段的值介于 1 到 10 之间,类似于 google PR rank。这是应该应用于 solr 中运行的每个查询的提升。这是我索引中的字段

  • ID
  • 标题
  • 文本
  • 升压1

boost 字段应该适用于每个查询。我正在尝试实现类似于 Google PR rank 的功能。有没有办法使用 solr 做到这一点?

0 投票
4 回答
5586 浏览

solr - Solr Dismax 处理程序 - 空格和特殊字符行为

当我的查询中有特殊字符时,我得到了奇怪的结果。

这是我的要求:

解析查询:

我有 17000 个结果,因为 Solr 正在执行 OR(应该是 AND)。

当我使用空格而不是特殊 char 时,我没有问题:

此查询的 2000 个结果。

这是我的 schema.xml(相关部分):

我什至尝试使用 PatternTokenizerFactory 对空格和特殊字符进行标记,但没有改变......

我目前的解决方法是在向 Solr 发送查询之前用空格替换所有特殊字符,但这并不令人满意。

编辑:即使使用 charFilter (PatternReplaceCharFilterFactory) 用空格替换特殊字符,它也不起作用......

通过 solr admin 进行的第一行分析,带有详细输出,用于 ​​query = 'histoire-france' :

'-' 被 ' ' 替换,然后由 WhitespaceTokenizerFactory 标记。但是,对于“histoire-france”和“histoire France”,我仍然有不同数量的结果。

我错过了什么 ?

0 投票
1 回答
2926 浏览

java - 如何将 solrj 与 DismaxRequestHandler 一起使用?

由于缺乏适当的文档,我无法弄清楚如何将 dismaxRequestHandler 与 SolrJ 一起使用。

另一方面,标准请求处理程序是 SolrJ 实现中的默认值吗?

0 投票
1 回答
1461 浏览

search - 具有动态字段的 Solr/Dismax

我刚刚在我的 solr 模式中添加了一些通配符动态字段:

<dynamicField name="*_s" type="string" indexed="true" stored="true"/>

然后我添加一个字段名称为 asdfasdf_s 的文档

如果我执行一个显示此文档的查询,我会看到 asdfasdf_s 以我设置的值存储在结果中。

但是,如果我按该动态字段中的值进行搜索,则不会得到任何结果。我正在使用 dismax 查询解析器。

0 投票
1 回答
460 浏览

java - 使用 dismax 搜索多词索引词

我的 solr 架构如下(仅重要部分):

在命名实体中,我索引了多词术语,例如:“diego alberto milito”、“diego armando maradona”。我正在尝试在两个字段中进行搜索,使用 dismax 查询以不同方式提升它们。

但尝试使用此查询: localhost:8080/solr/select/?q="diego armando maradona"&defType=dismax&qf=namedentities^100 bagofwords^1&fl=*,score&debugQuery=true&mm=0

solr 什么也没找到。也许我不明白“符号的正确用法。

我也不明白从 solr wiki 给出的这个:

“在 Solr 1.4 和之前的版本中,如果你想要 q.op=OR 的等价物,你基本上应该设置 mm=0,如果你想要 q.op=AND 的等价物,你应该设置 mm=100%。在 3.x 和树干中mm 的默认值由 q.op 参数决定(q.op=AND => mm=100%; q.op=OR => mm=0%)。请记住,默认运算符受您的架构影响。 xml 条目。在旧版本的 Solr 中,默认值为 100%(所有子句必须匹配)“

并且鉴于在我的架构中 defaultOperator 是 OR,为什么在不设置 mm=0 的情况下,我获得了默认的 mm 值 100。

提前致谢!

0 投票
1 回答
173 浏览

solr - 使用 bf 和使用 solr 查询如何使重音更准确

我使用 solr,我无法解决我的结果准确性问题(q vs bf 考虑到重音)

我有一个 solr 索引,索引了 2 个字段(这是简化的):

当我查询时:q=Fé&qf=town town_ascii&bf=population^2&defType=dismax 我想在我的结果中按此顺序:Félines > Ferrand

当我查询时:q=Fe&qf=town town_ascii&bf=population^2&defType=dismax我希望我的结果有这个顺序:Ferrand > Félines

问题是 Ferrand 每次都击败 Félines,因为它的人口更多,我该如何解决?我没有找到如何使用查询的分数并将其bf用于平衡人口

0 投票
2 回答
1189 浏览

solr - Solr在使用dismax时计算距离

我开始认为我想做的事情是不可能的,但我想我会试一试。

我正在运行 Solr 3.5。

我目前有两种类型的搜索:

  1. 一个基本的空间查询,它返回分数字段中两点之间的计算距离。

我的 Solr 日志中的示例查询:

  1. 允许对多个字段进行自由文本查询的 dismax 查询。

Solr 日志中的示例查询:

我想用 dismax 查询替换我的第一个查询,但我确实需要在响应中获取计算出的距离。是的,我可以以编程方式计算距离,但我宁愿不必这样做,因为 Solr 已经为我完成了。

我仍然希望能够“按相关性”、距离或任何其他字段对我的 dismax 查询进行排序,因此我的提升给出的分数可能对排序很有趣,但我不需要返回它。

0 投票
1 回答
921 浏览

solr - 使用 Solr ExtendedDisMax 查询解析器进行字段搜索

我在将 Solr ExtendedDisMax查询解析器与包含非普通查询中的字段搜索的查询一起使用时遇到问题。

案例如下。

如果我向 SOLR 发送带有参数的 edismax 请求(defType=edismax)

  1. qf=字段1^10
  2. q=field2:ciao
  3. debugQuery=on(用于调试目的)

solr 按照我的预期解析查询,实际上响应的调试部分告诉我

但是,如果我使表达式稍微复杂一点,例如将条件放入括号中: 1. qf=field1^10 2. q=(field2:ciao) 我得到

Solr 似乎无法识别字段语法。

我在文档中没有发现任何关于这种行为的提及而是他们说

此解析器支持完整的 Lucene QueryParser 语法,包括布尔运算符“AND”、“OR”、“NOT”、“+”和“-”、字段搜索、术语提升、模糊...

这个问题真的让我很恼火,因为即使使用 edismax 解析器,我也想做复杂的布尔和字段查询。

您知道解决此问题的方法吗?

编辑:Solr 版本是 3.6