Привет, Рахил, это дорого, так как все делается в базе данных. Вы можете взять все данные и сделать это в коде. У вас есть предложения по улучшению?

я есть два поля в таблице сообщений -Заголовок поста а такжеPOST_CONTENT, Теперь я использую стандартный полнотекстовый поиск, чтобы сопоставить некоторые ключевые слова с обоими полями. Мне нужно, чтобы поле заголовка было более релевантным, чем поле контента, а не упорядочивало результаты по релевантности ...

Как будет выглядеть синтаксис mysql для достижения этой цели? Я использую mysql 5.1

Ответы на вопрос(1)

Решение Вопроса

Сначала создайте три индекса FULLTEXT:

* one on the title column
* one on the body column
* one on both title and body columns

Затем создайте свой запрос следующим образом:

SELECT field1, field2, field3, title, body,
MATCH (title) AGAINST ('word_to_search') AS rel_title,
MATCH (body) AGAINST ('word_to_search') AS rel_body
FROM table_to_use
WHERE MATCH (title,body) AGAINST ('word_to_search')
ORDER BY (rel_title*2)+(rel_body)

Это даст заголовку в 2 раза большую актуальность, чем основной.

Это очень удобно, когда необходимо разрешить сортировку содержимого, например, по тегам (которые не просматриваются пользователями), поскольку позволяет настраивать результаты из-за кулис.

 Filipe Melo27 февр. 2017 г., 16:02
Привет, Фам, мог бы сказать, почему тебе это не нравится, и если да, то как это улучшить?
 Filipe Melo27 февр. 2017 г., 16:02
Привет, Рахил, это дорого, так как все делается в базе данных. Вы можете взять все данные и сделать это в коде. У вас есть предложения по улучшению?
 Raheel Hasan12 янв. 2016 г., 03:54
Какова стоимость этой операции? мы подбираем снова и снова !!
 Phung D. An12 июл. 2015 г., 18:18
Я дал вам большой палец вверх ... но все же я не люблю 3 индекса ...... просто не нравится ...

Ваш ответ на вопрос