Cum funcționează căutarea în WordPress la nivel tehnic?

27 sept. 2013, 18:48:47
Vizualizări: 19.3K
Voturi: 13

Folosesc căutarea WordPress pentru a căuta într-o gamă de postări personalizate și pentru a permite utilizatorului să navigheze în fiecare tip de postare individual.

Totuși, am observat că WordPress nu returnează întotdeauna cele mai bune potriviri. De exemplu, dacă caut "Microsoft", paginile care conțin termenul sporadic apar înaintea celor care îl folosesc frecvent.

În esență, încerc să aflu mai multe informații despre cum WordPress evaluează și ordonează paginile în funcție de relevanță și dacă pot influența acest lucru fără a instala plugin-uri suplimentare.

Orice ajutor este binevenit.

3
Comentarii

Aceasta este o întrebare prea largă pentru acest site - consultă secțiunile ce să întrebi și ce să nu întrebi. Am făcut câteva căutări rapide pe Google și am dat peste acest articol: Cum să îmbunătățești funcționalitatea de căutare în WordPress (este din 2008, așa că rezultatele pot varia). În ceea ce privește influențarea funcționalității fără plugin-uri - dacă ești alergic la plugin-urile altora, probabil va trebui să îți scrii unul propriu. Plugin-urile afectează modul în care funcționează WP, iar asta încerci să faci. Corect?

Pat J Pat J
27 sept. 2013 19:09:28

Mulțumesc, nu e vorba că vreau să evit folosirea plugin-urilor altora, ci mai degrabă faptul că vreau să evit "împrăștierea de plugin-uri", adică "O, voi instala un plugin pentru asta și pentru ailaltă" și, fără să-ți dai seama, ajungi să ai 30 de plugin-uri activate.

chrisd chrisd
30 sept. 2013 16:33:47

Înțeleg și simpatizez. Folosesc o serie de plugin-uri, dar am scris o bună parte dintre ele.

Pat J Pat J
30 sept. 2013 17:32:55
Toate răspunsurile la întrebare 2
2
10

EDITARE - Versiunea actuală a WordPress suportă relevanța, așa că acest răspuns nu mai este corect.


Nu există un concept de rang sau relevanță, este doar o simplă interogare LIKE pe titlul și conținutul postării:

($wpdb->posts.post_title LIKE '{$n}{$term}{$n}') OR ($wpdb->posts.post_content LIKE '{$n}{$term}{$n}')

Puteți utiliza filtrul posts_search pentru a modifica sau a înlocui complet interogarea de căutare cu una proprie. Din /wp-includes/query.php:

// Permite pluginurilor să adauge/șteargă/modifice contextual secțiunea de căutare a interogării bazei de date
$search = apply_filters_ref_array('posts_search', array( $search, &$this ) );

Consultați și filtrele de interogare disponibile pe pagina Codex WP_Query.

27 sept. 2013 19:27:27
Comentarii

Amuzant că menționezi asta... Nacin a făcut commit la cod pentru sortarea după relevanță cam acum o oră. De fapt, probabil în același timp în care tu scriai răspunsul tău. :)

http://core.trac.wordpress.org/changeset/25632

Dave Ross Dave Ross
27 sept. 2013 21:04:54

Pentru bloguri mari/populare, căutarea în tot conținutul este destul de nerealistă. Care este metoda recomandată pentru a accelera acest proces fără a șterge pur și simplu "SAU (...)" din query.php? Ar trebui să postez o nouă întrebare sau poți extinde răspunsul tău?

Jay Brunet Jay Brunet
24 ian. 2014 06:03:11
0

Începând cu WordPress 3.7 (octombrie 2013), rezultatele căutării sunt sortate după următoarele criterii (vezi ticket 7394):

  • Potriviri exacte de propoziții în titlurile articolelor.
  • Toți termenii de căutare în titlurile articolelor.
  • Orice termeni de căutare în titlurile articolelor.
  • Potriviri exacte de propoziții în conținutul articolelor.

Fiecare secțiune și orice articole rămase sunt apoi sortate după dată.

Există și noi filtre:

  • wp_search_stopwords, pentru a filtra cuvintele de oprire ignorate în WHERE.
  • posts_search_orderby, pentru a filtra ORDER BY la sortarea rezultatelor căutării.
16 feb. 2014 19:54:09