0

私のsolr xmlファイルは次のようなものです

<doc><UserId>12</UserId><UserIdInCommunity>1</UserIdInCommunity><CommunityId>1</CommunityId><UserEmail>gaurav@somemail.com</UserEmail></doc><doc><UserId>12</UserId><UserIdInCommunity>2</UserIdInCommunity><CommunityId>3</CommunityId><UserEmail>gaurav@somemail.com</UserEmail></doc>

ここから、ID 12 のユーザーが 2 つのコミュニティに存在することは明らかですが、"UserEmail:gaurav@somemail.com" というクエリを使用して solr で検索すると、1 つのレコードしか返されませんが、フリー テキストで検索すると、 「gaurav@somemail.com」という意味で、適切なレコードが返されます。

助けてください。
ありがとう、
ガウラフ

4

1 に答える 1

0

UserEmail は文字列フィールドですか? その場合、メールアドレスの後に余分な ">" があります: "gaurav@somemail.com>"。* を使用しない限り、文字列フィールドは完全に一致する必要があるため、XML を確認することをお勧めします。次のようなワイルドカード検索を試すこともできます。

 UserEmail:gaurav@somemail.com*

最後に、次のように、クエリに表示されない特定のユーザー ID を検索します。

 UserId:12

これにより、インデックスが作成された後にメールがどのように設定されているかがわかります。

もう 1 つ質問があります。インデックスの ID フィールドに何を使用していますか? 同じユーザー ID または電子メールを持つ複数のレコードがあり、それがあなたの ID である場合、取得できるレコードは 1 つだけです (Solr は新しいレコードを追加するのではなく、レコードを更新します)。

于 2011-06-03T13:18:54.023 に答える