ฉันต้องการความช่วยเหลื implementing เป็นคำค้นค้นหาในขวดกับขวด-msearch

0

คำถาม

ฉันใช้เวอร์ชั่น 3.9 ของไพธอนและพยายามจะสร้างคำค้นหาที่ที่เป็นของผู้ใช้สามารถป้อนข้อความของคำค้น/คำสำคัญและข้อความสามารถเป็น queried กับฐานข้อมูลที่บรรจุเชือก. ไม่มีข้อผิดพลาดใน compilation และทุกอย่างวิ่งหนีแต่ผลของการสืบค้นไม่ใช่สิ่งที่ฉันคาดหวังไว้ แทนที่จะกลับมาทั้งหมดแถวนั้นมีคำที่คล้ายกันเพื่อกคำหลักจากรายละเอียดคอลัมน์มันจะคืนค่ากลับมาเป็นกับการค้นหาในข้อความเป็นแบบนี้

นี่คือของฉัน init.py แฟ้ม:

import os
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from flask_msearch import Search
...
app = Flask(__name__)
searched = Search(app)
searched.init_app(app)
searched.create_index(update=True)
MSEARCH_INDEX_NAME =  os.path.join(app.root_path,'msearch')
MSEARCH_ENABLE = True
from .search import search as search_blueprint
app.register_blueprint(search_blueprint)

return app

นี่คือของฉัน models.py แฟ้ม

class Service (db.Model):
    __searchable__  = ['description']
    provider_id     = db.Column(db.Integer, db.ForeignKey('provider.provider_id'), nullable=False)
    service_id      = db.Column(db.Integer, nullable=False, primary_key=True)
    rating_avg      = db.Column(db.Float(precision=2), nullable=False)
    service_name    = db.Column(db.String(20), nullable=False)
    cost            = db.Column(db.Float(precision=2), nullable=False)
    description     = db.Column(db.String(255), nullable=False)
    category        = db.Column(db.String(20), nullable=False)
    
    def __repr__(self):
        return 'String representation of Service'

นี่คือของฉัน search.py แฟ้ม:


search = Blueprint('search', __name__)

@search.route('/search')
def searching():
    return render_template('search.html')

@search.route('/search', methods=['POST'])
def searching_post():
    searchInput = request.form.get('searchInput')
    results = Service.query.msearch(searchInput, fields= ['description'])
    return render_template('result.html', results=results)

นี่คือของฉัน search.html แฟ้มแม่แบบ:

{% extends "base.html" %}

{% block content %}
<div class="column is-8 is-offset-2">
    <h1 class ="title">
    Enter keywords and minimum rating
    </h1>
    <div class="box">
        <form method="POST" action="/search">
        <div class="field">
                    <div class="form-group">
                    <input class="input is-large" type="text" name="searchInput" placeholder=" " autofocus="">
                    </div>
                </div>
        <button class="button is-block is-info is-large is-fullwidth">Search</button>
         </form>
    </div>
</div>
{% endblock %}

นี่คือผลที่ผมได้รับคือเมื่อผมค้นอะไรใน searchbar:

Results: SELECT service.provider_id AS service_provider_id, service.service_id AS service_service_id, service.rating_avg AS service_rating_avg, service.service_name AS service_service_name, service.cost AS service_cost, service.description AS service_description, service.category AS service_category FROM service WHERE (service.description LIKE '%' || ? || '%')!
elasticsearch flask python whoosh
2021-11-21 22:29:36
1

คำตอบที่ดีที่สุด

1

msearch จะได้ค่าเป็น Query วัตถุและเมื่อคุณพิมพ์ของคุณ results ตัวแปรคุณเห็นมันข้อความแทนที่ underlying ร้องขอแบบ sql.

ที่จริงผลคุณต้องการไปยัง'ประมวลผล'การสืบค้น,e.g.

results = Service.query.msearch(searchInput, fields= ['description']).all()

ต่อไปนี้วิธีการเรียนจะยังเป็นสาเหตุของการประมวลผลของ underlying กับการค้นหา:

results = Service.query.msearch(searchInput, fields= ['description']).first()
results = Service.query.msearch(searchInput, fields= ['description']).one()
results = Service.query.msearch(searchInput, fields= ['description']).one_or_none()
2021-11-22 10:02:07

อันที่จริงฉันคิดออกความผิดพลาดที่มันเป็นเกี่ยวข้องกันแต่ฉันก็แค่หายไป.ทั้ง()จะจุดจบขอผลตรวจ=บริการ.กับการค้นหา.msearch(searchInput,ช่องข้อมูล=['รายละเอียด']).ทั้ง()
Ali Khabib

ในภาษาอื่นๆ

หน้านี้อยู่ในภาษาอื่นๆ

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................

ดังอยู่ในนี้หมวดหมู่

ดังคำถามอยู่ในนี้หมวดหมู่