问题标签 [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:如何在分词器之后提升查询词
如果查询词是“ABCD”,那么被分词后就是“A”“BC”“D”。我想提升词“BC”,所以查询词是这样的:
用户输入的所有查询词都将被自动处理,以便提升重要的查询词。
我想我可以自定义一个新的 Tokenizer 来做,但我不知道它是否可行,或者有没有其他更简单的方法。
search - solr 以更多内容提升相关文档
我有包含少量单词、少量句子和包含大量文本的文档的文档。当用户搜索某些内容时,solr 首先给出文本最少的文档作为最相关的文档,最后给出文本最多的文档。但是对于用户来说,相关性应该是不同的。第一个结果应该是相关的,但也需要包含更多的文本,因为用户需要获得最相关的文档但有更多的文本——阅读一些东西。
那么我怎样才能首先获得相关的文档,但首先是那些有更多文本的文档,而不是那些有几个单词的文档。我正在使用一个文本字段并在其中进行搜索。
search - 在一个范围内提升 solr 项目:分面搜索是一种选择吗?
我想在 Solr 中列出一长串具有非常特定顺序的项目。我没有使用 Solr 方面的经验:它们是在日期范围内对结果进行分组的好方法,在该范围内我可以稍微提升各种项目?
订货原则
- 所有项目通常必须按时间顺序排列
- 此顺序必须严格按照特定范围
- 在这样的范围内,项目可能会获得更高的优先级
- 在此范围内,项目可能具有超高优先级
- 在完整列表中,某些项目可能超出其范围并停留在顶部
示例配置
因此,如果我有一个项目表,它可能如下所示:
- 粘性物品 100% 在顶部
- 事件的优先级高于博客
- 精选始终位于某个范围内的顶部
- 范围设置为一周(7 天)
这可能看起来像这样(示例 1):
或者(示例 2,虚线仅表示周障碍):
或者(示例 3):
(澄清一下,事件的优先级(1 或 2 天或 x% 只是用于微调,目前这不是我的问题的一部分)
问题
现在的问题是:我知道我可以将每个字段或每个字段值的项目提升到一定数量或较高的值,以将其推到顶部。但我必须将其限制在一定范围内(在示例中为 7 天)。就像事件一样,精选永远不会超出一周的范围。
我听说过方面,但不确定这是否可以解决我的问题。由于我是 solr 的外行,所以很难弄清楚我是否能做到这一点。我看过 solr wiki,但所有新术语都让我对这个想法的搜索有点混乱。
我可以通过使用“分页”作为日期范围来解决这个问题(所以搜索从:[日期]到:[日期]),因此我自己创建一个“方面”。这更容易吗?如您所见,我对方面和复杂的 solr 查询一无所知:)
solr - Solr:在部分匹配期间使用全字提升文档
我有一个支持完全匹配和部分匹配的 SOLR 查询。查询词添加了适当的提升因子,其中精确匹配与部分匹配相比具有更高的提升。
然而,在部分匹配中,我们也希望以这样的方式定义增强因子:
具有完整单词的部分匹配比作为单词的一部分出现的部分匹配具有更高的优先级。
例如:如果用户搜索字符串“Annie Hall”,则与“ Halloween ”等值相比,包含“ Tanner Hall ”、“ Hall Pass ”等值的文档应该具有更高的权重(优先级) , " "拯救万圣节的狗"。它们都是部分匹配,但 "Hall" 在 "Tanner Hall" 和 "Hall Pass" 中作为单独的词出现,因此它们应该有更多的分数。
请帮忙。
问候,
sorting - 挣扎于 solr 查询和相关性
我在使用 Solr 时遇到了提升问题。我们最近从 Lucene 切换到了 Solr。
我们有 4 个(主要)搜索字段供我们搜索:本质、关键字、allSearchable 和质量;其中,对于索引中的每个文档,essential 包含关键字中的前 3 个非停用词。“关键字”只是关键字列表。'allSearchable' 保存的数据只是给定文档的其他数据的集合。我们在 lucene 中所做的是对用户在搜索框中键入的任何给定搜索进行 3 次搜索(以便按相关性对搜索结果进行排名),如下所示:
在搜索框中输入的单词:tree
查询 1:( +essence:tree
按“质量”排序)如果查询 1 返回的页面足够我们想要获取的页面,则返回。
查询 2:( +keywords:tree
按“质量”排序)如果查询 1 和查询 2 的组合为我们所在的页面返回了足够的结果,则返回结果。
查询 3:( +allSearchable:tree
按“质量”排序)返回结果。如果没有,那就倒霉了。
我的问题是分页。我以前不必将分页(startIndex,行)发送到 Lucene。我可以要求所有内容,然后翻转我返回的所有内容,收集足够的结果以返回,具体取决于我要求的页面。使用 Solr,我必须传递分页参数。我们的索引中有超过 800 万个文档,因此要获取与“树”之类的查询匹配的所有内容太昂贵了。问题是,如果我在查询 1 中请求第 3 页,但我没有得到足够的结果,那么我必须继续查询 2(关键字:树)。但这是不对的,因为我要求查询 2 的第 3 页结果(换句话说,给我与第 3 页的“关键字:树”匹配的所有文档)。但这并不是我真正想问的问题。如果本质不匹配任何内容,我只想询问关键字的第 1 页。等等。
我真正要找的是一个查询,这足以满足我之前所做的这三个查询,这样我首先得到本质匹配,其次是关键字匹配,最后是 allSearchable 匹配。
我尝试对这个查询使用提升: essence:tree^4.0 keywords:tree^2.0 allSearchable:tree^1.0
但这似乎不起作用,我不知道为什么?我拿出了各种东西,但事情仍然没有给我正确的结果。我正在使用默认的 StandardRequestHandler(它似乎使用 LuceneQueryParser(不是 dismax 或 edismax)。我可以看到提升正在发送到 URL 中的 solr(我通过在我的 requestHandler 的默认部分添加一个 qf 参数来使用提升) solrconfig.xml)。我当然知道 lucene 可以理解这些参数。谁能告诉我如何构造一个查询,让我得到我想要的结果,如上所述?enter code here
date - 使用日期字段对 json 文件进行 Solr 索引时间提升
我希望在我的 solr 搜索中匹配标题浮动到顶部的最新文档。为了速度,我希望在索引时间(而不是查询时间)完成。
我试图在索引时间使用标题和日期来提高分数(标题被提升但不是日期值?)。文档和一些堆栈流响应表明它可以完成,但怎么做? 文档日期的 Solr 索引时间提升
示例:我在一个 json 文件“datetest.json”中有 4 个文档,它们的标题相同但日期不同。
datetest.json 提交使用..
curl ' http://localhost.com:8983/solr/update/json?commit=true ' --data-binary @datetest.json -H 'Content-type:application/json'
查询是.. http://localhost.com:8983/solr/collection1/select?q=test_title
希望结果.. test04->test03->test02->test01
实际结果.. test02->test01->test03->test04
如何告诉 solr 在索引时间的最近日期提升?谢谢
solr - SOLR:我们可以指定一个字段作为记录的提升值吗?
我正在使用 SOLR。我有一个叫做重量的领域。我希望有这个价值来提升每条记录。有什么办法可以在配置文件中指定吗?
solr - Solr:在字段的每个值处设置不同的权重(提升)(multivalued=true)
- 我正在使用 Solr4.4。
- 我将 DIH 与 RDBMS 一起使用
我需要在字段的每个值处设置不同的权重(提升)(使用 multivalued=true)。特别是,我有一个字段(文本 - 多值 = true)和每个文本的浮点值不同,我会将该浮点值设置为字段的每个文本的提升。
在我的 db-dataimport.xml 文件中
它返回一个错误:
我还尝试在我的查询中设置一个演员:
我希望这清楚我的情况。提前致谢。
solr - 如何在 Solr 上的多值字段中提升重复值
我的 solr 索引的multiValue字段中有一些重复的(相同的字符串)数据,我想通过该字段中的匹配计数来提升文档。例如:
当我运行查询时,q=locales:en_US
我希望在顶部看到 doc1,因为它有两个“en_US”值。提升此类数据的正确方法是什么?
我应该使用特殊的标记器吗?
Solr 版本为:4.5
lucene - Solr [版本 3.6.1] 过滤查询问题
我索引了一个小集合(大约 150k 个文档)。我让用户能够使用下拉框进行过滤查询。“字段查询”字段是:apo_taxonomy、apo_dik、apo_number 和 apo_date。下面是 schema.xml 的一部分:
我还提供了关于“SearchHandler”的 solrconfig.xml 的一部分。我这样做是为了提高“精确”(锚定)短语匹配:
一些有价值的评论:
- “apo_taxonomy”字段可以包含以下值:“Πόρτα”、“Πόρτα-1”和“Πόρτα-ασφ1”</li>
- “apo_dik”字段可以保存以下值:“Μια”、“Μιάμιση”和“ΟΧΤΟ”</li>
- “apo_date”和“apo_number”字段可以保存数值。
- 以上所有字段均使用“”。我使用“solr.TextField”类的原因是将上述字段复制到一个字段(“内容”)中,并通过 solr 的基本查询(“q”参数)使它们可搜索。
- 整个系列都是希腊语。
我的问题:
当用户选择(使用下拉框)“Πόρτα”的 apo_taxonomy 值时,Solr 返回包含“Πόρτα-1”和“Πόρτα-ασφ1”的文档(http://example.com/solr/efe_dioi/select/?q= : &fq =apo_taxonomy:(Πόρτα)+apo_date:(2009)&start=0&rows=100)。这不是用户需要的。当用户过滤“Πόρτα”(apo_taxonomy)文档的集合时,他/她看不到“Πόρτα-1”和/或“Πόρτα-ασφ1”的文档。使用“solr.TextField”可行吗?正如你所注意到的,我需要使用“q”参数加上“精确”匹配的提升来搜索“过滤字段”。
我想再添加一个过滤器:“apo_ses”。该字段将保存如下值:“ΜΕΡΑ”、“ΜΕΣΗΜΕΡΙ”、“ΑΠΟΓΕΥΜΑ”和“ΒΡΑΔΥ”。是否可以在使用值过滤时给出 solr 指令,比如“ΜΕΡΑ”以返回由“ΜΕΡΑ”和“ΜΕΣΗΜΕΡΙ”或“ΜΕΡΑ”或“ΜΕΣΗΜΕΡΙ”过滤的文档?
任何帮助将不胜感激。
我希望不会让你厌烦我的写作。