【问题标题】:How to help my Solr engine to understand related terms?如何帮助我的 Solr 引擎理解相关术语?
【发布时间】:2020-04-30 16:13:46
【问题描述】:

我希望我的 solr 引擎在搜索时考虑到相关术语(不是同义词)的大列表。例如:

数据库 --> PostgreSQL、Oracle、Derby、MySQL、MSSQL、RabbitMQ、MongoDB

对于这种列表,我希望 Solr 考虑到如果用户正在搜索“postgresql 配置”,他可能还会带来与“RabbitMQ”或“Oracle”相关的结果,但不是绝对同义词。只是为了提高具有这些关键字/术语的结果。 实现这种连接的最佳方法是什么?谢谢!

【问题讨论】:

    标签: solr


    【解决方案1】:

    您已经发现这些是同义词 - 并且您希望使用该元信息作为提升(这是一个好主意)。

    然后关键是定义一个可以做你想做的事情的字段——除了你的常规字段。大多数情况是通过第二个字段执行“不太准确”版本的字段来实现的,并且与准确版本相比,对该字段中的匹配应用较低的提升。

    您定义两个字段 - 一个带有同义词(例如 content_synonyms),一个不带同义词(content),然后从 content 字段添加 copyField 指令(这意味着 Solr 将接受任何提交的内容到content 字段并将其“复制”为content_synonyms 字段的源文本。

    使用edismax,然后您可以使用qf 查询这两个字段并为确切的内容字段赋予更高的权重:qf=content^10 content_synonyms 将在content 中的命中率比content_synonyms 中的命中率高 10 倍,实际上使用同义词字段来提升内容。

    必须调整确切的权重以适合您的用例、文档配置文件和查询配置文件。

    【讨论】:

    • 我不太明白。通过这种方法,例如,当我查询短语“PostgreSQL 配置”时,除了 qf 中的不同权重之外,我查询的两个字段(内容和内容同义词)之间有什么不同?意思是,我不明白同义词本身的位置。谢谢。
    • 同义词只会出现在content_synonyms 字段中。字段的分析链会有所不同,只有 content_synonyms 字段扩展了术语的同义词。这样content 字段不包含同义词,因此该字段中的命中将仅匹配精确查询(因此,如果您查询Database 并且内容包含MySQL,content 字段将不匹配,但是content_synonyms 将)。如果您有一个包含Database 的文档,它将在content 字段中创建一个匹配项,并且得分比content_synonyms 中的匹配项高10 倍。
    猜你喜欢
    • 2010-10-05
    • 2014-09-08
    • 2010-11-08
    • 2022-12-12
    • 1970-01-01
    • 2011-07-16
    • 2011-03-25
    • 2016-12-14
    • 1970-01-01
    相关资源
    最近更新 更多