OrchardCore match_phrase不返回结果

问题描述

我有以下查询

{
  "from": 0,"size": 10000,"query": { "match_phrase": {"Practitioner.DoctorList": "peter goh"} },}

它不返回任何结果。

但以下内容

{
  "from": 0,"query": { "match": {"Practitioner.DoctorList": "peter goh"} },}

返回包含“ peth goh”,“ peter”和“ goh”的内容

为什么match_phrase不返回任何内容?因为我只希望结果与“ peth goh”匹配。

解决方法

由于您尚未添加任何示例数据和索引映射,(考虑将public class MyFirebaseInstanceService extends FirebaseMessagingService { @Override public void onMessageReceived(@NonNull RemoteMessage remoteMessage) { super.onMessageReceived(remoteMessage); String sented = remoteMessage.getData().get("sented"); FirebaseUser firebaseUser = FirebaseAuth.getInstance().getCurrentUser(); if (firebaseUser != null && sented.equals(firebaseUser.getUid())) { sendNotification(remoteMessage); } } private void sendNotification(RemoteMessage remoteMessage) { String user = remoteMessage.getData().get("user"); String icon = remoteMessage.getData().get("icon"); String title = remoteMessage.getData().get("title"); String body = remoteMessage.getData().get("body"); RemoteMessage.Notification notification = remoteMessage.getNotification(); int j = Integer.parseInt(user.replaceAll("[\\D]","")); Intent intent = new Intent(MyFirebaseInstanceService.this,MessageActivity.class); Bundle bundle = new Bundle(); bundle.putString("id",user); intent.putExtras(bundle); intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); PendingIntent pendingIntent = PendingIntent.getActivity(MyFirebaseInstanceService.this,j,intent,PendingIntent.FLAG_ONE_SHOT); Uri sound = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION); NotificationCompat.Builder builder = new NotificationCompat.Builder(MyFirebaseInstanceService.this,NOTIFICATION_CHANNEL_ID); builder.setSmallIcon(R.drawable.ic_notification_events); builder.setContentTitle(title); builder.setContentText(body); builder.setAutoCancel(true); builder.setSound(sound); builder.setContentIntent(pendingIntent); NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O) { NotificationChannel notificationChannel = new NotificationChannel(NOTIFICATION_CHANNEL_ID,NOTIFICATION_CHANNEL_NAME,NotificationManager.IMPORTANCE_HIGH); notificationChannel.setLockscreenVisibility(Notification.VISIBILITY_PRIVATE); notificationChannel.enableVibration(true); notificationChannel.setLightColor(Color.BLUE); notificationManager.createNotificationChannel(notificationChannel); } int i = 0; if (j > 0) i = j; notificationManager.notify(i,builder.build()); } @Override public void onNewToken(@NonNull String s) { super.onNewToken(s); Log.d("TOKEN",s); Task<InstanceIdResult> task = FirebaseInstanceId.getInstance().getInstanceId(); task.addOnSuccessListener(instanceIdResult -> { if (task.isSuccessful()) { String token = task.getResult().getToken(); sendRegistrationToServer(token); Log.d("TOKEN",token); } }); task.addOnFailureListener(e -> { if (!task.isSuccessful()) { Exception exception = task.getException(); Log.d("TOKEN",exception.getMessage()); } }); } private void sendRegistrationToServer(String token) { FirebaseUser firebaseUser = FirebaseAuth.getInstance().getCurrentUser(); if (firebaseUser != null) { DatabaseReference reference = FirebaseDatabase.getInstance().getReference("Tokens"); Token token1 = new Token(token); reference.child(firebaseUser.getUid()).setValue(token1); } } } 设为Practitioner类型)

请参考match_phrase查询,以获取详细信息

添加带有索引数据,映射和搜索查询的有效示例。

索引映射:

nested

索引数据:

{
  "mappings": {
    "properties": {
      "Practitioner": {
        "type": "nested" 
      }
    }
  }
}

搜索查询:

{
    "Practitioner": [
        {
            "DoctorList": "goh"
        },{
            "DoctorList": "peter goh"
        },{
            "DoctorList": "peter"
        }
    ]
}

搜索结果:

    {
  "query": {
    "nested": {
      "path": "Practitioner","query": {
        "match_phrase": {
          "Practitioner.DoctorList": "peter goh"
        }
      },"inner_hits":{}
    }
  }
}

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...