Comments 12
Очень в тему, только вчера задавался подобным вопросом насчет «ИЛИ», на будущее (пока это условие не требуется, но уже проектируется задача, в которой оно точно понадобится). Только я использую не SphinxQL, а API. Как бы вы рекомендовали сделать аналогичное через Sphinx API?
В общем постановке вопрос звучит, наверно, таким образом: как в Sphinx API делать запросы с использованием вычисляемых на лету (IF(`price` > 100, 1, 0) + IF(`price` = 0, 1, 0) AS `pricematch`) полей?
В общем постановке вопрос звучит, наверно, таким образом: как в Sphinx API делать запросы с использованием вычисляемых на лету (IF(`price` > 100, 1, 0) + IF(`price` = 0, 1, 0) AS `pricematch`) полей?
0
А разве трансформировать (A || B) в !(!A AND !B) в сфинксе нельзя?
+1
Можно, но трансформацию (вычисление) нужно делать в секции SELECT. При попытке использовать в выражении WHERE получаю ошибку:
В секции SELECT ваш вариант трансформации отрабатывает отлично!
ERROR 1064 (42000): sphinxql: syntax error, unexpected '(', expecting IDENT (or 5 other tokens) near '(NOT(NOT price >=100 AND NOT price=0))'
В секции SELECT ваш вариант трансформации отрабатывает отлично!
0
Дело в том, что, цитата, «в клаузах WHERE/GROUP BY/ORDER BY выражения задавать нельзя, только ссылаться на существующие колонки либо выражения.»
0
Аналогичный пример, только с другой выборкой:
Works fine for me. В Sphinxit реализовал этот workaround как OR-объект. sphinxit.readthedocs.org/en/latest/usage.html#or-objects
SELECT *, (id>=100 OR id=1) AS cnd FROM company WHERE cnd>0
Works fine for me. В Sphinxit реализовал этот workaround как OR-объект. sphinxit.readthedocs.org/en/latest/usage.html#or-objects
+3
Будьте добры, подскажите можно ли и, если да, то приведите пример как, использовать в выражениях IN. Например, это:
SELECT organizerid = 17320 OR 17320 IN (customerids) AS c1
FROM `NotCompletedTenders`
WHERE c1 = 1
OPTION ranker = none
выдает ошибку:
{«sphinxql: syntax error, unexpected IN, expecting FROM or ',' near 'IN (17320) AS c1 FROM `NotCompletedTenders` WHERE c1 = 1 OPTION ranker = none' (42000)»}
SELECT organizerid = 17320 OR 17320 IN (customerids) AS c1
FROM `NotCompletedTenders`
WHERE c1 = 1
OPTION ranker = none
выдает ошибку:
{«sphinxql: syntax error, unexpected IN, expecting FROM or ',' near 'IN (17320) AS c1 FROM `NotCompletedTenders` WHERE c1 = 1 OPTION ranker = none' (42000)»}
0
Не нашли ли ответ на данный вопрос. Испытываю подобные затруднения с IN, уже мозг сломал — перепробовал буквально все возможные варианты.
0
Дело в том, что я использоваю в качестве клиента SphinxConnector, это очень удобная вещь, но только для .NET. Так вот, на тот момент он неверно генерировал SphinxQL для «in» в «select».
Вот здесь мне ответили, и все встало на свои места: sphinxsearch.com/forum/view.html?id=12798. Зарепортил баг, и теперь он генерит: SELECT organizerid = 17320 OR IN(customerids,17320) AS c1.
Вот здесь мне ответили, и все встало на свои места: sphinxsearch.com/forum/view.html?id=12798. Зарепортил баг, и теперь он генерит: SELECT organizerid = 17320 OR IN(customerids,17320) AS c1.
0
Sign up to leave a comment.
Articles
Change theme settings
Реализация условия «ИЛИ» в SphinxQL