我使用Apache Lucene Solr来索引和搜索数据。在这里,我尝试构建自动完成操作:
我有文件,比如人。假设一个人是由文档、id、姓名、工作、国籍等字段描述的。(Nick Fury,博士,英语/ John Dock,教师,多米尼加/ Jim Tyson,码头工人,波兰)。当我写"do“时,我们希望建议是:
-作业(标签)
医生
码头工人
-国籍(标签)
多米尼加
-名称(标签)
约翰·多克
所以,我们想要像Suggester这样的东西,我试过了,但是结果是根据匹配的字段进行分组的,总是按照一定的顺序:首先是匹配的工作,然后是国籍(如果存在的话),如果可能的话,在类别中我们可以按计数或相关性进行排序。
然后,我尝试了3个方面。但我找不到如何对方面进行分组,以便获得工作、国籍……全部归类在一起。
有没有办法做到这一点?在solr irc中,有人回答说我必须使用2个查询。我该怎么做呢?
它类似于这个http://www.cominvent.com/2012/01/25/super-flexible-autocomplete-with-solr/,但是在那里,只搜索一个字段,然后按类别进行分组。在我的示例中,输入"co“returning:
-类别
国家/地区
大洲
-国家和城市
哥伦比亚
哥斯达黎加..。
发布于 2016-11-01 23:14:29
您可以为"suggest“组件中的每个字段创建不同的suggesters:
<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=nationalityhttps://stackoverflow.com/questions/40357188
复制相似问题