【问题标题】:Solr search with ranking and best match具有排名和最佳匹配的 Solr 搜索
【发布时间】:2014-03-28 13:34:14
【问题描述】:

我是这个论坛的新手。我正在寻找您对我们的搜索要求之一的建议。

我们有姓名、地​​址和其他相关数据可供搜索。搜索的输入将是一个没有多个单词的文本字符串。搜索 api 应将输入字符串与完整的数据集进行匹配,包括姓名、地址和其他数据。为了实现同样的目的,我使用 copyField 将所有必填字段复制到 solr confg 中的搜索字段。我将 searchField 用作针对传入的输入字符串的搜索。输入搜索字符串可以包含部分单词,如下例所示。

名称:测试保险公司

地址:银河城大街123号

电话:6781230000

solr创建索引后,可搜索字段会有如下文档

搜索字段 {

名称:测试保险公司

地址:银河城大街123号

电话:6781230000

}

最终用户可以输入“Test Company Main Ave”等搜索字符串,搜索当前返回上述文档。但不是在顶部,我看到其他文件也在被退回。

我将 solr 查询构建为 ""Test* Company Main Ave" ,在第一个单词后添加一个 "*" 并与 searchFiled 相悖

在互联网上搜索了几个论坛后,我采用了这种方法。我怎样才能在顶部获得最大匹配。不确定上述方法是否正确。

任何帮助表示赞赏。

谢谢,

内存

【问题讨论】:

    标签: search solr


    【解决方案1】:

    您可以单独索引所有字段,也可以将您的 searchField 用作总括。

    使用 Edismax 搜索处理程序查询得分提升的所有字段 + 还查询您的全部字段。

    例如。

    <str name="qf">
    Name^2.0
    Address^1.5
    .
    .
    .
    searchField^1.0
    </str>
    

    为了提高相关性,您还可以对每个字段进行两次索引,一次使用字符串类型,然后使用 text_en 类型,根据 this

    <str name="qf">
       Name^2.0
       Name_exact^5.0
       Address^1.5
       Address_exact^3.0
       .
       .
       .
       searchField^1.0
    </str>
    

    【讨论】:

      【解决方案2】:

      从技术上讲,如果有高于您要匹配的文档,那么它们是更好的匹配,因此这取决于它们获得更高相关性分数的原因。尝试打开调试,看看您首选文档上方的文档是从哪里获得额外相关性的。

      一旦你知道为什么他们会变得更高,那么你需要问自己为什么你的首选文档应该排在第一位,是什么让它在你眼中“更好”匹配。

      一旦你决定了为什么它应该排在首位,那么你需要弄清楚如何索引和搜索内容,以便你希望首先出现的文档实际上会首先出现,你可能正如 qux 在他的回答中所说的那样需要索引数据的多个版本以实现更好的匹配等。

      【讨论】:

      • 在 edismax 教程的帮助下,我得到了我想要的东西。感谢qux的建议。我仍然使用所有字段和 qf,pf 的单次索引。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-10-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多