我正在为Solr构建一组插件,以启用“混合”搜索,该搜索将匹配单词或令牌(非文档!)元数据(特定的ID号)。相同的单词在不同的上下文中可能有不同的ID号,这是由外部应用程序在索引时间内生成的。例如,"run“在一种情况下可能有12345,而在另一种情况下可能有54321 (取决于上下文)。在搜索中,ID号应该有更多的权重。(它们将在搜索时间内由同一外部应用程序在查询中提供。)
我读到了关于文档的自定义字段,我想知道我们是否可以在那里存储一个带有这些in的blob,但是我不知道如何将它包含在搜索中。
或者我应该假装这些ID是“同义词”(也许是用某种独特的标记来包围它们,比如:12345:)并使用同义词工厂标记器?
我是Solr的新手,但是我读过相关的文档,所以我想我理解它是如何在概念上工作的。的性能在这个阶段并不重要,,这是一个PoC。看起来有点类似于:Search different tokens on different fields in Solr,但不完全一样。哦,我也想把这段文字也搞清楚,但这不是问题。
编辑:删除了关于有效载荷的部分,在这里它是无关的。很抱歉搞混了
发布于 2014-07-05 20:54:02
除非我误解了,因为您已经生成了魔术令牌,唯一的要求是查看某个字段中是否存在魔术令牌值,如果是,则将该字段得分提高。
将魔术标记值索引到一个字段,将文本值索引到另一个字段。使用增强将魔力令牌字段中的匹配优先于文本值字段中的匹配。根据您的描述,魔术令牌字段可能是基于tint的整数字段。
搜索时,可以将搜索字符串生成为:
q=(token:12345^5 OR text:run) AND (token:32145^5 OR text:fast)
这将使令牌中的匹配值比文本字段中的匹配值高五倍。如果您不关心是否在文本字段中匹配12345,则可以使用:
q=12345 run 32145 fast&qf=text token^5
根据应用程序的需要,您可能不得不调整mm以提供所需的命中次数。
https://stackoverflow.com/questions/24581768
复制相似问题