dle-modules / DLE-BlockPro

Модуль вывода новостей для DLE
http://bp.pafnuty.name/
MIT License
13 stars 14 forks source link

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

Open 8PandaPanda8 opened 3 years ago

8PandaPanda8 commented 3 years ago

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

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 commented 3 years ago

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

8PandaPanda8 commented 3 years ago

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

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

pafnuty commented 3 years ago

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

pafnuty commented 3 years ago

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

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

8PandaPanda8 commented 3 years ago

Попробую. Спасибо.

чт, 14 янв. 2021 г. в 20:34, Pavel Belousov notifications@github.com:

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

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

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/dle-modules/DLE-BlockPro/issues/193#issuecomment-760389239, or unsubscribe https://github.com/notifications/unsubscribe-auth/AJIC4SQ3HEWVMCDNKSZJBC3SZ42KXANCNFSM4VRDBNYQ .