Pengaturcaraan pelayan Python: carian teks penuh menggunakan django-haystack

王林
Lepaskan: 2023-06-18 18:28:43
asal
1697 orang telah melayarinya

Python ialah bahasa pengaturcaraan yang digunakan secara meluas dalam pengaturcaraan sebelah pelayan, antaranya rangka kerja Django ialah rangka kerja web yang popular dan mudah digunakan. Dalam pembangunan aplikasi web, carian adalah komponen penting. Carian teks penuh merujuk kepada menggunakan algoritma pemadanan teks untuk mencari teks yang mengandungi rentetan pertanyaan. Untuk melaksanakan carian teks penuh, pembangun perlu memilih komponen enjin carian teks penuh yang sesuai. Dalam Python, django-haystack ialah komponen enjin carian teks penuh popular yang menyediakan keupayaan carian yang berkuasa dan API yang mudah digunakan.

Artikel ini akan memperkenalkan cara menggunakan Django dan django-haystack untuk melaksanakan carian teks penuh. Kami akan menggunakan aplikasi sampel untuk menunjukkan cara mengkonfigurasi django-haystack dan menggunakannya untuk melaksanakan carian teks penuh. Sebelum melakukan ini, anda harus mempunyai sedikit pemahaman tentang cara Django berfungsi dan arahan biasa.

Langkah pertama ialah memasang django-haystack. Anda boleh menggunakan pip untuk memasang django-haystack:

pip install django-haystack
Salin selepas log masuk

Seterusnya, anda perlu mengkonfigurasi django-haystack dalam fail settings.py Django. Mula-mula, tambahkan haystack pada INSTALLED_APPS:

INSTALLED_APPS = [
    ...
    'haystack',
    ...
]
Salin selepas log masuk

Kemudian, tambahkan yang berikut di bahagian bawah fail settings.py:

HAYSTACK_CONNECTIONS = {
    'default': {
        'ENGINE': 'haystack.backends.whoosh_backend.WhooshEngine',
        'PATH': os.path.join(BASE_DIR, 'whoosh_index'),
    },
}

HAYSTACK_SIGNAL_PROCESSOR = 'haystack.signals.RealtimeSignalProcessor'
Salin selepas log masuk

Dalam konfigurasi ini, kami menggunakan Whoosh sebagai carian teks penuh kami enjin . Kami juga menyediakan pemproses isyarat masa nyata untuk memastikan hasil carian dikemas kini dalam masa nyata.

Seterusnya, kita perlu mencipta indeks carian. Indeks carian ialah format data berstruktur yang digunakan untuk menyimpan dan mendapatkan semula data teks. Dalam django-haystack, indeks carian boleh digunakan untuk menentukan model data yang akan dicari dan menentukan maklumat seperti medan yang hendak dicari. Untuk menentukan indeks carian, cipta fail baharu yang dipanggil search_indexes.py. Berikut ialah contoh indeks carian:

from haystack import indexes
from .models import MyModel

class MyModelIndex(indexes.SearchIndex, indexes.Indexable):
    text = indexes.CharField(document=True, use_template=True)
    title = indexes.CharField(model_attr='title')
    content = indexes.CharField(model_attr='content')

    def get_model(self):
        return MyModel

    def index_queryset(self, using=None):
        return self.get_model().objects.all()
Salin selepas log masuk

Dalam indeks carian ini, kami mentakrifkan indeks carian yang dipanggil MyModelIndex yang akan mencari model data MyModel kami. Indeks carian mentakrifkan tiga medan: teks, tajuk dan kandungan. Antaranya, medan teks menggunakan templat teks untuk menentukan kandungan yang hendak dicari. Kami menggunakan atribut model_attr untuk menentukan atribut model data untuk dicari dalam dua medan yang tinggal.

Setelah anda menentukan indeks carian anda, terdapat proses permulaan langkah demi langkah untuk memastikan data anda diindeks dengan betul. Untuk melaksanakan proses ini, jalankan dua arahan berikut:

python manage.py makemigrations
python manage.py migrate
Salin selepas log masuk

Akhir sekali, kita perlu menulis kod dalam paparan untuk melaksanakan carian teks penuh. Berikut ialah contoh paparan carian mudah:

from django.shortcuts import render
from haystack.query import SearchQuerySet

def search(request):
    query = request.GET.get('q')
    results = SearchQuerySet().filter(text=query)
    context = {
        'query': query,
        'results': results,
    }
    return render(request, 'search.html', context)
Salin selepas log masuk

Dalam paparan ini, kami mendapatkan semula rentetan pertanyaan dalam parameter GET dan menapis hasil yang sepadan dalam indeks carian. Akhir sekali, kami menyerahkan hasil carian kepada templat carian untuk dilihat oleh pengguna.

Dalam templat HTML, anda boleh menggunakan kod berikut untuk memaparkan hasil carian:

{% for result in results %}
    <h2>{{ result.object.title }}</h2>
    <p>{{ result.object.content }}</p>
{% endfor %}
Salin selepas log masuk

Kini anda boleh cuba mencari dalam aplikasi sampel. Cuma buka apl dan masukkan rentetan pertanyaan dalam bar carian. Jika anda menghadapi sebarang masalah semasa carian, sila semak fail log dan rujuk dokumentasi django-haystack untuk mendapatkan bantuan.

Ringkasnya, carian teks penuh ialah teknologi yang digunakan secara meluas dan memainkan peranan penting dalam aplikasi Web. Dalam Python, Django dan django-haystack ialah gabungan alat yang berkuasa untuk carian teks penuh. Dengan mengikuti panduan dalam artikel ini, anda boleh melaksanakan carian teks penuh dengan mudah menggunakan django-haystack dan meningkatkan kualiti serta pengalaman penggunaan aplikasi web anda.

Atas ialah kandungan terperinci Pengaturcaraan pelayan Python: carian teks penuh menggunakan django-haystack. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!