полнотекстовый поиск и подсветка с помощью PHP и MySQL - PullRequest
1 голос
/ 10 августа 2009

MySQL вполне может позаботиться о полнотекстовом поиске,

но не выделяются ключевые слова, по которым производится поиск,

как я могу сделать это наиболее эффективно?

Ответы [ 3 ]

2 голосов
/ 25 июля 2010

Решения, изложенные выше, требуют поиска всего документа для поиска, замены и выделения текста. Если документ большой, а многие есть, это кажется очень плохой идеей. Было бы лучше, если бы MySQL FTS возвращал смещения текста напрямую, как это делает SQLITE, а затем использовал бы индексированный оператор подстроки - это было бы значительно более эффективно.

1 голос
/ 10 августа 2009

Выполните запрос sql, а затем выполните preg_replace для результата, заменив каждое ключевое слово на KeyWord

$hilitedText = preg_replace  ( '/keyword/'  , '/<span class="hilite">keyword<\/span>/'  , $row['columName']);

И определите класс hilite в вашем css для форматирования так, как вы хотите, чтобы отображались выделенные ключевые слова. Если у вас есть несколько ключевых слов, поместите их в массив, а их замены - во второй массив в том же порядке и передайте эти массивы как два первых аргумента функции.

0 голосов
/ 10 августа 2009

Получить набор результатов из mysql. Выполните поиск и замените каждое поисковое слово, заменив каждое слово тем, что вы делаете для выделения, например, <span class='highlight'>word</span>

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...