Տեքստային որոնման համակարգի մշակում Python-ի Whoosh գրադարանի միջոցով
Whoosh-ը դասերի և գործառույթների python գրադարան է տեքստը ինդեքսավորելու և այնուհետև ինդեքսը որոնելու համար: Ենթադրենք, որ դուք կառուցում եք մի ծրագիր, որը պետք է անցնի տարբեր փաստաթղթեր, այնուհետև գտնել նմանություններ կամ ստանալ տվյալներ՝ հիմնվելով մի քանի նախապես սահմանված պայմանների վրա, կամ ասենք, որ ցանկանում եք հաշվել, թե քանի անգամ է նշված նախագծի վերնագիրը հետազոտության մեջ: թուղթ, ապա այն, ինչ մենք կառուցում ենք այս ձեռնարկում, օգտակար կլինի:
Սկսել
Տեքստի որոնման մեր համակարգը կառուցելու համար մենք կաշխատենք whoosh գրադարանի հետ:
Այս գրադարանը նախապես փաթեթավորված չէ Python-ով: Այսպիսով, մենք այն կներբեռնենք և կտեղադրենք՝ օգտագործելով pip փաթեթի կառավարիչը:
Whoosh գրադարանը տեղադրելու համար օգտագործեք ստորև նշված տողը:
pip install whoosh
Եվ հիմա, մենք կարող ենք ներմուծել այն մեր սցենարին՝ օգտագործելով ստորև բերված տողը:
from whoosh.fields import Schema, TEXT, ID
from whoosh import index
Տեքստային որոնման համակարգի կառուցում Python-ի միջոցով
Նախ, եկեք սահմանենք մի թղթապանակ, որտեղ անհրաժեշտության դեպքում կպահենք ինդեքսավորված ֆայլերը:
import os.path
os.mkdir("dir")
Հաջորդը, եկեք սահմանենք սխեման: Schema-ն նշում է փաստաթղթերի դաշտերը ինդեքսում:
schema = Schema(title=TEXT(stored=True), path=ID(stored=True), content=TEXT(stored = True))
ind = index.create_in("dir", schema)
writer = ind.writer()
writer.add_document(title=u"doc", content=u"Py doc hello big world", path=u"/a")
writer.commit()
Այժմ, երբ մենք ինդեքսավորել ենք փաստաթուղթը, մենք որոնում ենք այն:
from whoosh.qparser import QueryParser
with ind.searcher() as searcher:
query = QueryParser("content", ind.schema).parse("hello world")
results = searcher.search(query, terms=True)
for r in results:
print (r, r.score)
if results.has_matched_terms():
print(results.matched_terms())
Արդյունք
Այն կստեղծի հետևյալ արդյունքը.
<Hit {'path': '/a', 'title': 'doc', 'content': 'Py doc hello big world'}>
1.7906976744186047
{('content', b'hello'), ('content', b'world')}
Օրինակ
Ահա ամբողջական կոդը.
from whoosh.fields import Schema, TEXT, ID
from whoosh import index
import os.path
os.mkdir("dir")
schema = Schema(title=TEXT(stored=True), path=ID(stored=True), content=TEXT(stored = True))
ind = index.create_in("dir", schema)
writer = ind.writer()
writer.add_document(title=u"doc", content=u"Py doc hello big world", path=u"/a")
writer.commit()
from whoosh.qparser import QueryParser
with ind.searcher() as searcher:
query = QueryParser("content", ind.schema).parse("hello world")
results = searcher.search(query, terms=True)
for r in results:
print (r, r.score)
if results.has_matched_terms():
print(results.matched_terms())
Եզրակացություն
Այժմ դուք սովորել եք Python-ում տեքստային որոնման համակարգեր ստեղծել: Օգտագործելով սա՝ դուք կարող եք որոնել տարբեր փաստաթղթերում՝ վայրկյանների ընթացքում օգտակար բովանդակություն հանելու համար: Դուք նաև ուսումնասիրել եք Python-ի Whoosh գրադարանի ներուժը: