Як працює пошук WordPress за лаштунками?


11

Я використовую пошук WordPress, щоб шукати різноманітні типи публікацій та дозволяти користувачеві детально вивчати кожен окремий тип публікації.

Однак я знаходжу, що WordPress не повертає те, що я спершу вважав би найкращими. Наприклад, якщо я шукаю Microsoft, сторінки, які містять цей термін неправильно, все одно повертаються перед сторінками, які регулярно використовують цей термін.

В основному я намагаюся знайти деяку інформацію про те, як WordPress займає ранжирування сторінок і визначає релевантність, і чи можу я впливати на це, не встановлюючи ніяких плагінів .

Будь-яка допомога дуже цінується.


2
Це жахливе широке запитання для цього сайту - дивіться, що потрібно задавати , а що не задавати . Я зробив декілька швидких пошуків Google і натрапив на це: Зробіть WordPress 'Search Suck Less (все-таки з '08 року, проте YMMV). Що стосується впливу на функціональність без плагінів - Якщо у вас алергія на інші плагіни, вам, ймовірно, доведеться написати один із своїх. Плагіни просто впливають на функціонування WP, і саме це ви намагаєтеся зробити. Правильно?
Пт J

1
Дякую, це не те, що я не хочу уникати використання чужих плагінів, більше того, що я хочу уникати "розширення плагіну", тобто "О, у мене буде плагін для цього і того", і перш ніж ви це дізнаєтесь, у вас працює 30 з них.
chrisd

Я розумію і співчуваю. Я запускаю ряд плагінів, але я написав купу їх.
Пт J

Відповіді:


10

EDIT - Поточна версія WordPress підтримує актуальність, тому ця відповідь більше не є точною.


Немає поняття рангу чи релевантності, це просто простий запит LIKE щодо назви та змісту публікації:

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

Ви можете використовувати posts_searchфільтр, щоб змінити або повністю замінити пошуковий запит на власний. Від /wp-includes/query.php:

// Allow plugins to contextually add/remove/modify the search section of the database query
$search = apply_filters_ref_array('posts_search', array( $search, &$this ) );

Також дивіться доступні фільтри запитів на сторінці WP_QueryCodex .


4
Смішно, ви повинні сказати, що… Nacin здійснив код для сортування за релевантністю близько години тому. Насправді, напевно, у той самий час, коли ви писали свою відповідь. :) core.trac.wordpress.org/changeset/25632
Дейв Росс

Для великих / популярних блогів пошук усього контенту є досить нереальним. Який рекомендований спосіб прискорити це, не видаляючи "OR (...)" з query.php? Потрібно мені поставити нове запитання чи можна розширити свою відповідь?
PJ Brunet

5

Оскільки WordPress 3.7 (жовтень 2013 р.) , Результати пошуку сортуються за такими критеріями (див. Квиток 7394 ):

  • Повні речення відповідають у заголовках публікацій.
  • Усі пошукові терміни в заголовках публікацій.
  • Будь-які пошукові терміни в заголовках публікацій.
  • Повне речення відповідає змісту публікації.

Кожен розділ та будь-які інші публікації потім сортуються за датою.

Також є нові фільтри:

  • wp_search_stopwords, для фільтрування зупинених слів, проігнорованих у WHERE.
  • posts_search_orderby, для фільтра під ORDER BYчас замовлення результатів пошуку.
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.