我正在调查solr的autosuggest行为,但我想完成以下任务:
用户输入某事。在,autosuggest应提供“分组”信息 - 包括索引数据。例如,键入“Op”可以表示“OpenLayers”和“Opodo”,它们都是索引的一部分,但在“类型”方面是不同的。结果,我不想仅仅向客户提出这个词,而是为所有可能的建议词提供元信息,按“类型”分组。
E.g。
文本字段: [Op]
建议:
[网站] Opodo
[框架] 的OpenLayers
另一个解决方案是,定义另一个查询来解决所有建议,对这些建议进行分组,然后将视图传递给客户端。但是,如果没有必要,不要强迫多次查询solr会很棒。
我也很想知道,如果不是通过xx *查询用户输入而是建议单词,解释这些并传递视图可能是获得我想要的正确方法。
提前致谢。
答案 0 :(得分:0)
如果要显示结果的更多元数据,则需要查询结果而不是autosuggest 如果您只想要自动填充,则可以查看EdgeNGramFilter。
<filter class="solr.EdgeNGramFilterFactory" minGramSize="2" maxGramSize="30"/>
将生成ngram标记,这些标记位于不同的位置。
e.g。 Opodo with generate - &gt; op,opo,opod,opodo ....
此字段可以通过查询字段用于自动完成 您可以将其他元数据包含在结果中,并将它们分组到客户端。
通配符会很昂贵,因为它是查询时间。此外,不对通配符查询执行任何分析。