1

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" に一致するのはなぜですか?

4

2 に答える 2

2

タイプtext_generalはおそらく、のバリアントとして扱われているステマーを使用するように構成されています。LocLocation

ステマーを使用しないようにタイプを構成するか、を使用して文字列全体を検索してみてくださいnames:"Dev Location"

于 2012-09-06T02:58:39.427 に答える
0

これが理由かもしれません。

クエリのこの部分は、用語にフィールド名修飾子がないため、schema.xmlで設定されているものに対して検索してnames:Dev+Locationいる場合にのみ検索します。names:DevLocationLocation<defaultSearchField>

したがって、次のようなフィールドを引用するnames:"Dev Location"か、接頭辞を付けることができますnames:Dev AND names:Location

于 2012-09-06T22:48:15.373 に答える