Как создать полнотекстовый индекс с несколькими столбцами из нескольких таблиц? - PullRequest
0 голосов
/ 03 мая 2019

У меня есть эти две таблицы (таблица продуктов и брендов), и мне нужно создать полнотекстовый индекс для поддержки функции поиска для моего веб-сайта. Я хочу индекс, который содержит название бренда и название продукта. И для этого случая столбцы происходят из разных таблиц.

На данный момент я знаю, как создавать полнотекстовые индексы из одного или нескольких столбцов из одной таблицы.

Это предварительный просмотр базы данных, над которой я сейчас работаю: Просмотр базы данных здесь

Ответы [ 2 ]

1 голос
/ 03 мая 2019

MySQL не поддерживает любой тип индекса, охватывающий несколько таблиц.Все столбцы индекса должны быть взяты из одной таблицы.

Если вам нужно создать поисковую систему для набора данных из нескольких таблиц, вы можете рассмотреть возможность экспорта результата запроса JOIN в полнотекстовую поисковую систему.например, Sphinx Search или Solr (это программное обеспечение для ElasticSearch).

Вам может понравиться моя презентация Throwdown для полнотекстового поиска .

0 голосов
/ 03 мая 2019

Возможно, вам нужно сделать следующее ...

Соберите все столбцы, по которым вы ведете поиск, в одну таблицу. (Либо переместите их в эту новую таблицу, либо сделайте копии.) В этой таблице также будет id для ссылки на основную таблицу.

Затем сконцентрируйтесь на оптимизации поисковой активности с использованием этой таблицы.

Обратите внимание, что при копировании столбцов в таблицу вы можете выполнить некоторую очистку (удаление kruft, мешающего поиску, например тегов html, альтернативного написания и т. Д.).

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

...