2011-10-27 134 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