2011-10-27 15 views
2

部分文字列/ワイルドカード/部分文字列一致を使用してsolr属性フィールド(非solr.TextFieldタイプ)を検索できますか?sunspot solr属性サブストリング/ワイルドカード検索

たとえば、solr.StrFieldフィールドと、 "1234567890"という文字列を含むドキュメントがある場合、 "456"を検索してそのドキュメントを返すことができます。

私は、この方法ではEdgeNGramなどのようなものを使用してテキストフィールドのみを検索できますが、属性フィールドは検索できません。

答えて

2

ワイルドカード用のテキストフィールドと同様に、文字列の部分一致を使用できます。 solr.strFieldがへのアナライザを許可しないよう

使用しているクエリパーサ場合は、ワイルドカードクエリをリードするサポートし、あなたが簡単に*456*を検索することができ、これは1234567890

しかし一致している必要があり、EdgeNGramは、solr.TextFieldのために働くだろうそれに追加する。
したがって、クラスがsolr.TextFieldのフィールドを定義することができ、EdgeNGramを分析チェーンに含めることができます。これは、部分一致のために索引付けされた用語を帯状に分解します。

+0

リーディングワイルドカードをサポートするクエリパーサーはありますか?私はまだ1つに出くわしました。 – cpjolicoeur

+0

ExtendedDismaxクエリパーサーがサポートしています。 setAllowLeadingWildcard(true)はtrueに設定されています。 – Jayendra