jQuery自动完成Solr多字段

jQuery自动完成Solr多字段,jquery,solr,autocomplete,Jquery,Solr,Autocomplete,我目前正在尝试为Solr索引实现jquery自动完成。在这个solr索引中,我有多个字段,autocomplete应该处理这些字段。为了简单起见,我目前只处理两个字段: 活动名称 ac_事件信息 只要我只想搜索一个字段,它就可以正常工作,但我不知道如何用两个或多个字段实现它,这就是我的代码的实际外观: $search_el.autocomplete({ source : function(request, response) { $.ajax({

我目前正在尝试为Solr索引实现jquery自动完成。在这个solr索引中,我有多个字段,autocomplete应该处理这些字段。为了简单起见,我目前只处理两个字段:

  • 活动名称
  • ac_事件信息
只要我只想搜索一个字段,它就可以正常工作,但我不知道如何用两个或多个字段实现它,这就是我的代码的实际外观:

$search_el.autocomplete({
      source : function(request, response) {
        $.ajax({
          url : 'http://192.168.82.75:8983/solr/local/select',
          dataType : 'jsonp',
          jsonp : 'json.wrf',
          data: {
            q: 'ac_event_title:'+$search_el.val()+' OR ac_event_information:'+$search_el.val(),
            wt: 'json',
            fq: 'ss_type:event',
            hl: 'true',
            'hl.fl': 'ac_event_title,ac_event_information'
          },
          success : function(data) {
            var docs = JSON.stringify(data.response.docs);
            var jsonData = JSON.parse(docs);
            response($.map(jsonData, function(value, key) {
              return {
                label : value.ac_event_title[0]
              }
            }));
          }
        });
      },
      minLength : 1
    });

所以一般的问题是,我不知道如何告诉自动完成,“如果结果在字段“acu event\u title”中显示“acu event\u title”,如果结果在字段“acu event\u information”中显示“acu event\u information”“

如果您使用的是Solr 5.0及以上版本,则无需为多个字段定义单独的字典。您可以使用
copyField
将所需字段复制到新的
suggest\u字段
,然后为
suggest\u字段
创建词典。建议者字段应存储在solr中,因此字段定义中需要
stored=true

否则,您可以对旧的solr版本使用以下配置


您可以在solr
suggestComponent
中配置多个建议字典,然后将字典添加到
requestHandler
中。您可以根据需要添加其他参数。此配置被放入
solrconfig.xml

例如,请检查以下配置:

<searchComponent name="suggest" class="solr.SuggestComponent">
    <lst name="suggester">
        <str name="name">suggest</str>
        <str name="lookupImpl">AnalyzingLookupFactory</str>
        <str name="dictionaryImpl">DocumentDictionaryFactory</str>
        <str name="field">suggest_field</str>
        <str name="suggestAnalyzerFieldType">text_general</str>
        <str name="buildOnCommit">true</str>
    </lst>

    <lst name="suggester">
        <str name="name">suggest1</str>
        <str name="lookupImpl">AnalyzingLookupFactory</str>
        <str name="dictionaryImpl">DocumentDictionaryFactory</str>
        <str name="field">state</str>
        <str name="suggestAnalyzerFieldType">text_general</str>
        <str name="buildOnCommit">true</str>
    </lst>
</searchComponent>


<requestHandler name="/suggest" class="solr.SearchHandler" startup="lazy">
<lst name="defaults">
    <str name="suggest">true</str>
    <str name="suggest.dictionary">suggest</str>
    <str name="suggest.dictionary">suggest1</str>
    <str name="suggest.count">10</str>
    <str name="suggest.onlyMorePopular">true</str>
    <str name="suggest.count">5</str>
    <str name="suggest.collate">false</str>
    <str name="echoParams">explicit</str>
    <str name="rows">10</str>
</lst>
<arr name="components">
    <str>suggest</str>
</arr>
</requestHandler>

建议
分析格洛库普工厂
文档字典工厂
建议
正文\u概述
真的
建议1
分析格洛库普工厂
文档字典工厂
状态
正文\u概述
真的
真的
建议
建议1
10
真的
5.
假的
明确的
10
建议

无论在哪里,您都可以显示所有字段,因为solr不会告诉您哪个字段被命中