如何使用Firebase查询来搜索整个文本而不仅仅是第一个单词?

时间:2019-12-04 22:21:54

标签: java android firebase-realtime-database full-text-search

我正在尝试在我的Firebase数据库中搜索并使用以下查询:orderByChild(“ childName”)。startAt(“ search_word”)。endAt(“ search_word” +“ \ uf8ff”);

但是我只是根据第一个单词而不是整个文本来得到结果。

示例: 在图片中,如果我搜索“简单”一词,我没有任何结果, 但是当我搜索这个词时,我得到正确的结果。

enter image description here

这是我的代码:

 private void QuestionFeedSearch(String newText){
        FirebaseRecyclerOptions<Question> options =
                new FirebaseRecyclerOptions.Builder<Question>()
                        .setQuery(QuestionRef.orderByChild("body").startAt(newText).endAt(newText+"\uf8ff")
                                , Question.class).build();
        FirebaseRecyclerAdapter<Question, QuestionViewHolder> firebaseRecyclerAdapter =
                new FirebaseRecyclerAdapter<Question, QuestionViewHolder>(options) {
                    @Override
                    protected void onBindViewHolder(@NonNull QuestionViewHolder holder, final int position, @NonNull Question model) {
                        final String QuestionKey;
                        QuestionKey = getRef(position).getKey();
                        holder.username.setText(model.getFullname());
                        holder.questionDate.setText("  " + model.getDate());
                        holder.questionTime.setText("  " + model.getTime());
                        holder.questionTitle.setText(model.getTitle());
                        holder.questionBody.setText(model.getBody());
                        holder.setLikeButtonStatus(QuestionKey);
                        //Picasso.get().load(model.getQuestionImage()).into(holder.questionimage);
                        Picasso.get().load(model.getQuestionImage()).fit().centerInside().into(holder.questionimage);
                        holder.itemView.setOnClickListener(new View.OnClickListener() {
                            @Override
                            public void onClick(View v) {
                                //  Toast.makeText(question_feed.this, chose_question_id, Toast.LENGTH_LONG).show();
                                Intent chosePostIntent = new Intent(question_feed.this, click_question_activity.class);
                                chosePostIntent.putExtra("chose_question_id", QuestionKey);
                                startActivity(chosePostIntent);
                            }
                        });
                        holder.commentQuestion.setOnClickListener(new View.OnClickListener() {
                            @Override
                            public void onClick(View v) {
                                Intent commentsIntent = new Intent(question_feed.this, CommentsActivity.class);
                                commentsIntent.putExtra("chose_question_id", QuestionKey);
                                startActivity(commentsIntent);
                            }
                        });
                        holder.likeQuesionButton.setOnClickListener(new View.OnClickListener() {
                            @Override
                            public void onClick(View v) {
                                likeChecker = true;
                                likesRef.addValueEventListener(new ValueEventListener() {
                                    @Override
                                    public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                                        if (likeChecker.equals(true)) {
                                            if (dataSnapshot.child(QuestionKey).hasChild(currentUserId)) {
                                                likesRef.child(QuestionKey).child(currentUserId).removeValue();
                                                likeChecker = false;
                                            } else {
                                                likesRef.child(QuestionKey).child(currentUserId).setValue(true);
                                                likeChecker = false;
                                            }
                                        }
                                    }
                                    @Override
                                    public void onCancelled(@NonNull DatabaseError databaseError) {
                                    }
                                });
                            }
                        });
                    }
                    @NonNull
                    @Override
                    public QuestionViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
                        View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.all_questions_layout, parent, false);
                        QuestionViewHolder viewHolder = new QuestionViewHolder(view);
                        return viewHolder;
                    }
                };
        questionList.setAdapter(firebaseRecyclerAdapter);
        firebaseRecyclerAdapter.startListening();
    }

0 个答案:

没有答案