Использование Sphinx с Regex для поиска таблицы номеров - PullRequest
1 голос
/ 25 января 2012

Буду очень признателен, если кто-нибудь посоветует мне здесь, пожалуйста.Я новичок в sphinx и установил его на свой сервер с работающим тестовым примером базы данных / индекса.

Сейчас я нахожусь в положении, когда мне нужно изменить настройку в файле sphinx.conf и создатьновый индекс и т. д.

Структура моей таблицы следующая:

Name: listings_dvla
===================
id -> Unsigned INT, primary key
characters -> varchar(15) FULLTEXT indexed
active -> bool
price -> decimal(10,2)

Эта таблица содержит 30 000 000 строк, и до того, как я использовал mysql для запроса к базе данных аналогичных номерных знаков, используя следующий запрос (при условии, что я искал "kev"):

SELECT characters, price 
FROM listings_dvla 
WHERE active=TRUE 
AND characters REGEXP '^[a-z0-9]*[(k)]+[a-z0-9]?[(e)(3)]+[a-z0-9]?[(v)]+[a-z0-9]*' 
ORDER BY characters ASC
LIMIT 0, 12

Регулярное выражение говорит: "найди мне K, затем E или 3, а затем V". Этот запрос может занять более минуты в зависимости отпоиск, мне нужно, чтобы он был меньше нескольких секунд.

Итак, мои вопросы:

  1. Сфинкс создан для удовлетворения этого требования?
  2. Может ли Сфинкс регулярновыражения, которые будут создаваться во время выполнения в зависимости от ввода пользователя
  3. Как мне вообще начать это делать?

1 Ответ

1 голос
/ 25 января 2012
...