我在2个文档中有以下功能:
1: name: "John Oliver W Clane"
2: name: "John Oliver Wayne"
如果搜索查询为q=john
,则应显示1和2。如果查询为q=john oli
,则表示1和2。但是,如果查询为q=wayne
,则只应显示2。如果查询为q=oliver w
,则1和2都应显示。
基本上,应该从边缘搜索名称中的所有单词。 如何在solr中配置它?
注意:name
已编入索引。
答案 0 :(得分:2)
您可以为您的字段name
尝试以下fieldType。
<analyzer>
<tokenizer class="solr.KeywordTokenizerFactory"/>
<filter class="solr.EdgeNGramFilterFactory" minGramSize="4" maxGramSize="25"/>
</analyzer>
输入字符串:"John Oliver W Clane"
要过滤的标记符:"John Oliver W Clane"
输出代币:
"John", "John ", "John O", "John Ol", "John Oli", "John Oli", "John Oliv", "John Olive", "John Oliver", "John Oliver ", "John Oliver W", "John Oliver W "
, "John Oliver W C", "John Oliver W Cl", "John Oliver W Cla", "John Oliver W Clan", "John Oliver W Clane".
您可以尝试使用其他过滤器。
<filter class="solr.NGramFilterFactory" minGramSize="4" maxGramSize="25"/>
您可以在此处详细了解分析仪和过滤器。Solr analyzers and filters