Выборка по тегам

MATCH('@title_prev "текст текст "/0.1 | @description "текст текст "/0.1')

Если верно, находим вхождение в двух полях, или или. Или в первом и во втором…

Пара вопросов

  • Как сделать, чтобы сортировка была в приоритете на первое поле?
  • В некоторых случаях, схожего контента 1-2 штуки, как ее дополнить по тегам. Поле у новости содержит id тегов, через запятую. Например 1,2,3,4, у тещей новости предположим ‘22,31,4,5’. Возможно ли выполнить поиск по тегам, имея две строки или необходимо при создании индекс приводить теги к какому та формату. К примеру для каждого тега отдельное поле и имя, если возможно то как. И будет ли сортировка в порядке приоритетов, образно 3 блока, в первом список сформированный по первому поли, второй блок по второму полю, а третий по тегам…
  • Как сделать, чтобы сортировка была в приоритете на первое поле?

Задать вес для него выше.

Возможно ли выполнить поиск по тегам

Вот это может помочь Manticore Search Manual: Functions > Arrays and conditions functions

SELECT * FROM indexnews WHERE tag ANY('1032','233')

Индекс содержит поле

    ["tag"]=> string(19) "17132,940,17494,901"

При выполнении запроса, пишет нет поля

Syntax error or access violation: 1064 table indexnews: unsupported column 'tag' (stored field, NOT attribute)

вам нужно создать атрибут tag если вы хотите фильтровать по нему Manticore Search Manual: Creating a table > Data types. У вас щас tag объявлен как полнотекстовое поле, по полнотекстовому полю нельзя фильтровать.

Есть новость, за ней закреплено 3 тега.
Их id 22,33,52 (содержимое поля)

Cоздаю индекс текущей таблицы…
Как быть когда необходимо, взять текущую строчку у записи22,33,52 и найти все записи в поле которых есть хотя бы один из id.

Может при создании индекса возможно создать несколько полей в которых по 1 id тега, какое то общее имя у все полей? Хз… Или поле будет содержать массив id, а в дальнейшем возможно выборку делать каким то образом…

Поиск по вхождению строки, это хорошо, но займет большее время…
Может найти вхождении 22 у 2322,3111,3

Вы прочитали про MVA и Manticore Search Manual: Functions > Arrays and conditions functions ?

SELECT * FROM `indexnews` WHERE all(tag) in ('18245','18244','9958') LIMIT 15
SELECT * FROM `indexnews` WHERE tag any('18245','18244','9958') LIMIT 15

Ничего не работает, пытаюсь найти вхождение в строчке. Хотя бы одно, не так чтобы все должны присутствует. Одни ошибки…

У меня работает:

mysql> drop table if exists indexnews; create table indexnews(tag string); insert into indexnews (tag) values('18245 smth_else'); SELECT * FROM `indexnews` WHERE tag any('18245','18244','9958') LIMIT 15;
--------------
drop table if exists indexnews
--------------

Query OK, 0 rows affected (0.01 sec)

--------------
create table indexnews(tag string)
--------------

Query OK, 0 rows affected (0.00 sec)

--------------
insert into indexnews (tag) values('18245 smth_else')
--------------

Query OK, 1 row affected (0.00 sec)

--------------
SELECT * FROM `indexnews` WHERE tag any('18245','18244','9958') LIMIT 15
--------------

+---------------------+-----------------+
| id                  | tag             |
+---------------------+-----------------+
| 1516152265172320261 | 18245 smth_else |
+---------------------+-----------------+
1 row in set (0.00 sec)
--- 1 out of 1 results in 0ms ---

Как MVA тоже:

mysql> drop table if exists indexnews; create table indexnews(tag multi); insert into indexnews (tag) values((18245,99999)); SELECT * FROM `indexnews` WHERE any(tag) in (18245,18244,9958) LIMIT 15;
--------------
drop table if exists indexnews
--------------

Query OK, 0 rows affected (0.01 sec)

--------------
create table indexnews(tag multi)
--------------

Query OK, 0 rows affected (0.00 sec)

--------------
insert into indexnews (tag) values((18245,99999))
--------------

Query OK, 1 row affected (0.00 sec)

--------------
SELECT * FROM `indexnews` WHERE any(tag) in (18245,18244,9958) LIMIT 15
--------------

+---------------------+-------------+
| id                  | tag         |
+---------------------+-------------+
| 1516152265172320263 | 18245,99999 |
+---------------------+-------------+
1 row in set (0.00 sec)
--- 1 out of 1 results in 0ms ---