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

я думаю что запроса

MATCH('
     @tag_t "Катунский заповедник  Природа Животный мир"/1 
')

с сортировкой по умолчанию (ORDER BY weight() desc), уже должно хватить. Тк чем больше слов сматчилось тем больше будет вес документа.

Вот даже в manual приведет пример запроса похожий на вас с правильными весами Manticore Search Manual: Functions > Searching and ranking functions

1 Like

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

Необходимо отсортировать по полю, в целом указать поле и выполнить сортировку не составит труда. Возможно ли выполнить сортировку по каждому условию.

Допустим

MATCH('
     @tag_t "Катунский заповедник  Природа Животный мир"/2 |
     @tag_t "Катунский заповедник  Природа Животный мир"/1 
')

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

Выполнить сортировку не глобально, а локально по каждому блоку.

Отобразить, сперва блок по 2 вхождениям, затем по 1 вхождению. Сортировку выполнить локально по каждому блоку. Или придется выполнить 2 запроса?

Необходимо отсортировать локально по количеству комментариев к новости

запрос найдет все вхождения

MATCH('
     @tag_t "Катунский заповедник  Природа Животный мир"/1 
')

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

Про ваше условия сортировки не понятно, что за глобально и локально, какие блоки? Было бы проще если вы би привели примеры атрибутов документов и как они должны быть упорядочены.

Вы можете использовать до 5 условий сортировки, например

MATCH('
     @tag_t "Катунский заповедник  Природа Животный мир"/1 
')
ORDER BY weight() desc, attr1 desc, attr2 desc

ну те сначала документы будут отсортированы по весу документа, далее у документов с одинаковыми весами, будет использована сортировка по атрибуту attr1, далее у документов с одинаковыми значениями в attr1, будет использована сортировка по атрибуту attr2. Manticore Search Manual: Searching > Sorting and ranking

1 Like

Мне бы сперва с другим разобрать. Придется все переделывать, пожалуй.

Запятая в предложении равносильно пробелу? 2 фразы, через запятую без пробела, расцениваются как 2 отдельных слова?

Чтобы искать по целому ключу состоящему из 2 фраз, возьмем

id  | name
-----------------
22  | Катунский заповедник
31  | Животный мир

В таблице создаем полнотекстовое поле, которое будет содержать id.
Вопрос в том, возможно выполнить с таким содержимым

22,31 или необходимо обозначить начало слова к примеру t22,t31

 name  |  tag
 News1 |  22,31
@tag  "2 55 6"/1

Должно вернуть пустой результат, не точно. Не будет ли вхождения по 2

@tag  "2,55,6"/1

Если указывать через запятую, это равносильно если бы писали @tag "2 55 6"/1

?

все что не находится в charset_table заменяется на пробел и да полнотекстовый запрос "2,55,6"/1 равносилен "2 55 6"/1

не должно быть никакого вхождения по 2 - матчатся только целые слова.
Если у вас только не включена индексация префиксов \ суфиксов и дополнительно опция expand_keywords описаная в manual Manticore Search Manual: Creating a table > NLP and tokenization > Wildcard searching settings . Только в этом случае все слова будут расширены как описано в manual

1 Like

В результате, вместо 15 строчек по лимиту, получаю всего 2. Это те записи в которых есть хоть какое то совпадение…

Для того чтобы дополнить, добавил

@description \"{$news['title']}\"/0.01

Самый малый процент который доступен, сделать его еще меньше не выходит.

Частично это спасает, 2 записи на верху и можно сказать рандомные ниже.
В некоторых случаях блок на половину все еще пустой.

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