【问题标题】:Solr results grouped by field (but facet based grouping)Solr 结果按字段分组(但基于方面的分组)
【发布时间】:2016-11-01 09:24:02
【问题描述】:

我使用 Apache Lucene Solr 来索引和搜索数据。在这里,我正在尝试构建自动完成操作:

我有文件,例如人员。假设一个人由文档、id、姓名、工作、国籍中的某些字段描述。 (Nick Fury,医生,英语 / John Dock,老师,多米尼加人 / Jim Tyson,码头工人,波兰语)。当我写“做”时,我们希望建议是:

--- 工作(标签)

医生

码头工人

---国籍(标签)

多米尼加

---名称(标签)

约翰·多克

所以,我们想要像 Suggester 这样的东西,我试过了,但是根据匹配的字段对结果进行分组,总是按照一定的顺序:首先是匹配的工作,然后是国籍(如果存在)......,如果可能的话,在里面我们可以按数量或相关性对类别进行排序。

然后,我尝试了 3 个方面。但我找不到如何对方面进行分组,以便将工作、国籍……归为一类。

有没有办法做到这一点?在 solr irc 中,有些人回答说我必须使用 2 个查询。我该怎么做?

类似于 http://www.cominvent.com/2012/01/25/super-flexible-autocomplete-with-solr/ ,但在那里,只搜索一个字段,然后按类别分组。在我的示例中,这种情况是,输入“co”返回:

--- 类别

国家

大陆

--- 国家和城市

哥伦比亚

哥斯达黎加 ...

【问题讨论】:

    标签: solr autocomplete lucene facet autosuggest


    【解决方案1】:

    您可以为“建议”组件中的每个字段创建不同的建议器:

    <searchComponent name="suggest" class="solr.SuggestComponent">
       <lst name="suggester">
          <str name="name">job</str>
          <str name="field">job</str>
          ...
       </lst>
    <lst name="suggester">
          <str name="name">nationality</str>
          <str name="field">nationality</str>
          ...
       </lst>
    </searchComponent>
    

    (您可以添加更多建议者...)

    然后是单个“/suggest”请求处理程序:

    <requestHandler name="/suggest" class="solr.SearchHandler" startup="lazy">
      <lst name="defaults">
          <str name="echoParams">all</str>
          <str name="wt">json</str>
          <str name="indent">false</str>
        <str name="suggest">true</str>
        <str name="suggest.count">10</str>
      </lst>
      <arr name="components">
        <str>suggest</str>
      </arr>
    </requestHandler>
    

    然后在客户端:

    http://localhost:8983/solr/collection1/suggest?suggest.q=co&suggest.dictionary=job&suggest.dictionary=nationality
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多