Solr 3.6.1 を使用すると、schema.xml に次のフィールドがあります。
<field name="names" type="text_general" indexed="true" stored="false" multiValued="true"/>
<dynamicField name="names_*" type="text_general" indexed="true" stored="true"/>
schema.xml のドキュメントには、「text_general」は次のようにする必要があると記載されています。
- StandardTokenizer でトークン化する
- 大文字と小文字を区別しない "stopwords.txt" (現在は空) からストップ ワードを削除します。
- 文字列をダウンケースします。
- クエリ時にのみ、同義語も適用されます (この時点では空でもあります)。
フィールドのこのデータを使用して、Solr でインデックス付けされた 2 つのドキュメントがあります。
<!-- doc 1 -->
<str name="names_data">Name ABC Dev Loc</str>
<!-- doc 2 -->
<str name="names_data">Name ABC Dev Location</str>
次のクエリを実行すると:
id:(doc1 OR doc2) AND names:Dev+Location)
両方のドキュメントが返されます。Solr の StandardTokenizer がどのように機能するかについての私の理解に基づいて、doc2 のみが返されると予想していました。
"Dev+Location" が "Dev Loc" と "Dev Location" に一致するのはなぜですか?