becks
@becks

Как грамотно сделать поиск номерной информации с помощью Sphinx?

Есть rt-индекс. Сейчас морфология настроена на лемматизацию 3 основных языков (рус, англ, нем):
morphology	 = lemmatize_ru, lemmatize_en, lemmatize_de
В ближайшее время будут добавлены настройки обработки и других языков, но уже по стемме (французский, итальянский и т.д.). Сейчас поиск по ключевым словам выполняется просто замечательно. Возникла задача поиска номерной информации. Что в данном случае может являться номерной информацией:
1) 423452352364265 - просто какая-то последовательно цифр
2) 42-3452352(36426)5 последовательность с различными разделителями

Какой функционал поиска по номерной информации необходим:

1) Полное совпадение:
Предположительный пример запроса
SELECT * FROM rt_index where match('423452352364265');
2) Начинается с:
Предположительный пример запроса SELECT * FROM rt_index where match('42345*');
3) Содержит:
Предположительный пример запроса SELECT * FROM rt_index where match('*523642*');
4) Заканчивается на:
Предположительный пример запроса SELECT * FROM rt_index where match('*265');

В результатах этих запросов я хотел бы получать обе представленные выше записи.
Поскольку я буду использовать индекс, построенный по лемме и стемме, то поиск по звездочке (*), как я понимаю, работать не будет. Ну и даже, если бы можно было использовать *, индекс бы разросся неимоверно.

Какое вижу единственное решение. Делать предобработку текста, доставать всю номерную информацию, чистить от разделителей и укладывать в соседнее поле. Настроить еще один индекс (стемма, поиск по звездочке) на поиск только по данному полю. При номерном поиске - искать только в данной колонке. Топорное решение, но скорее всего будет работать. Опять же возникает некоторая проблема с сопоставлением преобразованного номера с номером в тексте.

Может есть другие более элегантные решения?
  • Вопрос задан
  • 2606 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
19 апр. 2024, в 03:52
1000 руб./за проект
19 апр. 2024, в 03:01
1000 руб./за проект
18 апр. 2024, в 21:56
2000 руб./за проект