Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/solr/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在不同的搜索字段中找到与给定搜索词完全匹配的solr文档_Solr - Fatal编程技术网

如何在不同的搜索字段中找到与给定搜索词完全匹配的solr文档

如何在不同的搜索字段中找到与给定搜索词完全匹配的solr文档,solr,Solr,我想找到与给定搜索词的所有单词匹配的文档 例如,我在solr中搜索以下字段 产品名称 产品描述 产品概要 当我搜索“我的第一个产品”时,我应该得到在任何搜索字段中都有完整术语的文档,或者如果匹配发生在文档中的多个字段中。i、 我应该得到结果中的前两个文件 示例数据: { “ProductName”: “My”, "ProductDescription": “My First Product“, "ProductSummary": “Su

我想找到与给定搜索词的所有单词匹配的文档

例如,我在solr中搜索以下字段

  • 产品名称
  • 产品描述
  • 产品概要
  • 当我搜索“我的第一个产品”时,我应该得到在任何搜索字段中都有完整术语的文档,或者如果匹配发生在文档中的多个字段中。i、 我应该得到结果中的前两个文件

    示例数据:

     {
       “ProductName”: “My”,
       "ProductDescription": “My First Product“,
       "ProductSummary": “Summary”
     },
     {
       “ProductName”: “My”,
       "ProductDescription": “First”,
       "ProductSummary": “Product”
     },
     {
       “ProductName”: “Product”,
       "ProductDescription": “First”,
       "ProductSummary": “Nothing”
     }
    ]  
    
    How should I achieve that in solr? 
    

    添加一个catch all copy字段(在示例中,此字段可能在名称
    \u text\u
    下配置)


    然后,您可以选择或
    q.op=和
    ,以确保在搜索时匹配查询中的每个术语
    mm
    需要
    dismax
    edismax
    (推荐)查询解析器(
    defType=edismax
    )。

    您可以有一个catch-all-copy字段(在示例中,该字段可以在名称
    \u text\u
    下配置)并将
    mm=100%
    与edismax处理程序一起使用,或使用
    q.op=和
    :Hi@MatsLindh I创建了包含文本类型的“捕获所有副本”字段(多字段)。是的,它给了我结果,但它给了我比预期更多的结果。正如我在上面的问题中所问的那样,当我搜索“我的第一个产品”(因为每个术语都应该在文档字段中,无论是在同一个字段中还是在不同的字段中)时,我只想得到前两个结果,但我得到所有三个结果,因为“产品”和“第一个”在第三个文档中也可用。如何使用catch all字段实现这一点?正如我在评论中提到的,使用
    mm=100%
    -这意味着所有查询词都需要匹配,或者说
    q.op=和
    来表示每个词都需要和和在一起,而不是和-ed。Hi@MatsLindh,谢谢你的帮助。Hi@MatsLindh,现在,我的网站搜索正在使用edismax,qf中的不同查询字段带有用于排序结果的boosting参数。现在我必须确保整个搜索词应该在文档中可用(在同一个字段中或在不同的字段中),这是使用带有mm参数的catch all字段实现的。但是,有可能通过增加特定的文件来对结果进行排序,从而实现整个搜索词的匹配吗?我正在考虑在同一个集合中使用join,但不确定这是否是正确的方法。