2011-10-27 90 views
2

是否可以使用子字符串/通配符/部分字符串匹配搜索solr属性字段(非solr.TextField类型)?太阳黑子solr属性子字符串/通配符搜索

例如,如果我有一个solr.StrField字段和包含字符串“1234567890”的文档,我希望能够在“456”上进行搜索并返回该文档。

从我所看到的只有textfields可以在此方法中使用像EdgeNGram之类的东西,而不是属性字段?

回答

2

您可以将部分匹配用于字符串以及通配符的文本字段。

如果您正在使用查询分析器,支持领先的通配符查询,您可以轻松地搜索*456*,这应该符合1234567890

然而,EdgeNGram只会为solr.TextField工作,为solr.strField不允许分析仪被添加到它。
因此,您只能定义类为solr.TextField的字段,并在分析链中包含EdgeNGram,这会将索引项分解为用于部分匹配的带状疱疹。

+0

是否有支持引导通配符的查询解析器?我还没有碰到过。 – cpjolicoeur

+0

ExtendedDismax查询解析器支持它。 setAllowLeadingWildcard(true)被标记为true。 – Jayendra