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