2017-01-30 58 views
0

Я использую regexp_fitler в хорошем качестве в моих Sphinx конфигурациях, однако насколько я знаю, это относится ко всему индексу в моем выборе.Regexp_filter на конкретном поле индекса Sphinx?

Если мой выбор для idx_example является:

Select Name,Description,City,State from TableA

и я делаю regexp_filter например,

NY > New York

я могу столкнуться с проблемами в, например, в Description поле. Я понимаю, что могу решить это с помощью более сложных шаблонов, однако, учитывая, что поля State, которые я получаю, являются либо Акронимами для Полных Имен, нет никаких оснований для того, чтобы я мог каким-то образом заставить regexp_filter действовать только на поле State.

ответ

0

Для этого не существует официального синтаксиса. Одна из главных проблем заключается в том, как сфинкс применял бы ее к запросам. Было бы трудно применить его последовательно.

Это можно сделать с помощью функций mysql, но при использовании большого списка получилось бы громоздким. может

sql_query = Select Name,Description,City,REPLACE('NY','New Your',State) as State \ 
    FROM TableA 

Wonder, если вместо того, чтобы реализовать его с помощью объединения, есть таблица 'разложения'

short,full 
NY, New York 
CA, California 

Тогда

sql_query = Select Name,Description,City,coalesce(e.full,State) as State \ 
    FROM TableA LEFT JOIN expansion e ON (state=short) 

(убедитесь, что индекс по expansion.short !)

+0

Спасибо, что бы обойти другую работу, которую я делаю. План теперь сохраняет весь html и использует либо зоны, либо regexp с тегами, которые будут конкретными относительно сопоставления. Был надеяться избежать этого. – user3649739