Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Проблема с выборками из xfSearch #193

Open
8PandaPanda8 opened this issue Jan 2, 2021 · 5 comments
Open

Проблема с выборками из xfSearch #193

8PandaPanda8 opened this issue Jan 2, 2021 · 5 comments
Assignees

Comments

@8PandaPanda8
Copy link

8PandaPanda8 commented Jan 2, 2021

Здравствуйте!

DLE: 14
Blockpro: 6.0.3

Использую такую строку подключения:
{include file="engine/modules/base/blockpro.php?template=blockpro/shortstory&cacheLive=1800&limit=84&xfSearch=year|2020&sort=randomLight"}

Для того, чтобы вывести все новости с этим дополнительным полем. Однако по неизвестной мне причине в выборку попадают и другие года, например, 1884, 1996 и так далее.

Как я решил проблему:
Добавил к каждому году в базе MYSQL -q, теперь мой запрос модуля такой:
{include file="engine/modules/base/blockpro.php?template=blockpro/shortstory&cacheLive=1800&limit=84&xfSearch=year|2020-q&sort=randomLight"}

Теперь выводит новости только с полем, где указан 2020 год, как и задумывалось.

Проблема повторяется не только с цифрами, но и с однословными словами, например, у меня есть поле, где указана конкретная страна, но в эту же выборку попадают и другие страны.
Но как только добавить -q к окончанию страны, выборка становится точной, какой и должна быть.

Отмечу, что вместо q может быть что угодно, тут, наверное, играет роль знак минуса.

Можно ли исправить эту проблему или добавить опцию «строгой выборки», чтобы все работало, как и задумывалось? Спасибо за Ваш труд!

@pafnuty
Copy link
Member

pafnuty commented Jan 4, 2021

@8PandaPanda8 попробуйте включить экспериментальные функции
не уверен, что поможет, но всё же.
Так же такое поведение может быть из-за совпадающих частей допполей. например year_one, year или совпадающих значение в других допполях, что-то подобное уже было, но достаточно давно.

@pafnuty pafnuty self-assigned this Jan 4, 2021
@8PandaPanda8
Copy link
Author

Включение "экспериментальные функции" не помогло(((

Исправить невозможно?

@pafnuty
Copy link
Member

pafnuty commented Jan 5, 2021

@8PandaPanda8 Если есть возможность скиньте мне на email [email protected] или прямо сюда, кусок данных для 5-7 новостей (информацию о допполях из xfields.txt, и сами данные из допполей новостей, но нужны все допполя, что бы понять как починить),

@pafnuty
Copy link
Member

pafnuty commented Jan 14, 2021

@8PandaPanda8 Причина проблемы - не совсем корректное условие поиска по допполю в коде. Точнее оно корректное, но в вашей ситуации работает неправильно.
Условие учитывает ситуацию, когда искомое значение находится не в начале строки (например при поиске по части значения допполя).

Есть хороший вариант решения без кода - сделать поле year перекрёстными ссылками, тогда ID новостей будут записываться в отдельную таблицу в БД и выборка будет происходить гораздо быстрее. Ну и использовать &experiment=y, чтобы новости отбирались из этой таблицы, вместо поиска по все базе.
Однако в этом случае потребуется перестроение публикаций.

@8PandaPanda8
Copy link
Author

8PandaPanda8 commented Jan 14, 2021 via email

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants