elasticsearch 如何利用支持上下文实现lucene suggester
现在只有AnalyzingFixSuggester支持上下文。所有其他实现,如AnalyzingSuggester、FreeTextSuggester、FuzzySugster,都不支持上下文。 在我的任务中,我需要实现suggester,它只搜索文档中存在的具有特定字段和特定值的术语。 例如,只有字段类型具有值类型A的文档的字段描述的术语 现在为了解决这个问题,我为每个类型创建了不同的迭代器, 就像这样:
elasticsearch 如何利用支持上下文实现lucene suggester,
elasticsearch,solr,lucene,lucene.net,
elasticsearch,Solr,Lucene,Lucene.net,现在只有AnalyzingFixSuggester支持上下文。所有其他实现,如AnalyzingSuggester、FreeTextSuggester、FuzzySugster,都不支持上下文。 在我的任务中,我需要实现suggester,它只搜索文档中存在的具有特定字段和特定值的术语。 例如,只有字段类型具有值类型A的文档的字段描述的术语 现在为了解决这个问题,我为每个类型创建了不同的迭代器, 就像这样: Map<String, List<String>> ma
Map<String, List<String>> mapOfTerms...;
int maxDoc = indexReader.maxDoc();
for (int i = 0; i < maxDoc; i++) {
Document doc = indexReader.document(i);
String type = doc.get("type");
List<String> list = mapOfTerms.get(type);
//... add terms from doc to list
}
//create custom InputIterator for each type list
//create AnalyzingSuggester, AnalyzingInfixSuggester, FreeTextSuggester, FuzzySuggester for each InputIterator
术语映射。。。;
int maxDoc=indexReader.maxDoc();
对于(int i=0;i
例如,对于三种类型的“A型”、“B型”和“C型”,我提出了12条建议。
如何更好地解决此问题?问题是关于suggester的上下文。我的答案是过滤结果,就像suggester只为文档的子集生成一样。 lucene folk将此过滤器称为上下文: 版本5.4是第一个solr版本,在建议上支持筛选器,但仅适用于BlendedInfixSuggester和AnalyzingInfixSuggester: 因此,对于所有其他建议,您必须为每个可能的过滤器构建一个建议,例如,为每个过滤器创建一个额外字段“field\u filtername” 没有额外的信息,我看不出如何更好地解决这个问题 可能您的上下文可以用作的路由(每个上下文的建议者分离已经由SolrCloud完成)
可能您根本不需要建议,突出显示或面可以解决您原来的问题。谢谢,您的意思是:“因此,对于所有其他建议,您必须为每个可能的筛选器构建一个建议,例如,为每个筛选器“field\u filtername”创建一个额外字段。”?现在我为我的案例制作了custominputierator、CustomLuceneDictionary、CustomMultiFields。自定义InputIterator仅包含筛选的术语。我的方法要求字段名包含类型名,例如字段“title\u typeA”、“title\u typeB”。。。