KillDead
Хранитель порядка
- Регистрация
- 11 Авг 2006
- Сообщения
- 894
- Реакции
- 579
- Автор темы
- #1
Здравствуйте. Есть БД с короткими записями. К примеру Заголовки новостей, Названия товаров , Ключи и тп. Задача - найти похожие записи.
Тут в паре соседних тем речь касалась подобного. Для пробы взял 10к названий товаров, по ним легко сказать похожие они в реальности или нет.
Товар мышка. Забил в поиск 1000dpi usb 1 1 wired ergonomic optical mouse 150cm cable
Среди первых 30
Для полнотекстового поиска с помощью мускула - из 30 , 16 товаров именно из категории Мышки
Для сфинска - из 30 только 10 - из категории мышки, другие- это провода, хабы и прочее. Попустил к примеру такие:
A300 Human Ergonomic 6 Keys Bluetooth3.0 Wireless Optical Gaming Mouse for Home Office,
RH1900 Wired Gaming Mouse USB Powered
Вообще полнотекстовый поиск мускула отличается от поиска сфинкса, но хотелось бы чтобы сфинкс давал результаты не намного хуже. Можете посоветовать чтото?
Сам запрос
Пробовал ещё поиграться с вхождениями, но результат вышел хуже
сам конфиг
Тут в паре соседних тем речь касалась подобного. Для пробы взял 10к названий товаров, по ним легко сказать похожие они в реальности или нет.
Товар мышка. Забил в поиск 1000dpi usb 1 1 wired ergonomic optical mouse 150cm cable
Среди первых 30
Для полнотекстового поиска с помощью мускула - из 30 , 16 товаров именно из категории Мышки
Для сфинска - из 30 только 10 - из категории мышки, другие- это провода, хабы и прочее. Попустил к примеру такие:
A300 Human Ergonomic 6 Keys Bluetooth3.0 Wireless Optical Gaming Mouse for Home Office,
RH1900 Wired Gaming Mouse USB Powered
Вообще полнотекстовый поиск мускула отличается от поиска сфинкса, но хотелось бы чтобы сфинкс давал результаты не намного хуже. Можете посоветовать чтото?
Сам запрос
Код:
SELECT * , WEIGHT() FROM keywords WHERE MATCH('"1000dpi usb 1 1 wired ergonomic optical mouse 150cm cable"/1') LIMIT 0,30 OPTION ranker = matchany , cutoff =1000
Пробовал ещё поиграться с вхождениями, но результат вышел хуже
Код:
SELECT * , WEIGHT() FROM keywords WHERE MATCH('1000dpi | usb | wired | ergonomic | optical | mouse | 150cm | cable| *1000dpi* | *usb* | *wired* | *ergonomic* | *optical* | *mouse* | *150cm* | *cable*') LIMIT 0,30 OPTION cutoff =1000
сам конфиг
Код:
source keywords
{
type = mysql
sql_host = localhost
sql_user = root
sql_pass =
sql_db = search_index
sql_port = 3306
sql_query_pre = SET NAMES utf8
sql_query = \
SELECT * \
FROM keywords
sql_attr_uint = name
}
index keywords
{
# Источник данных для индексирования
source = keywords
# Адрес, где будут хранится данные индекса
path = D:\sphinx/data/keywords
min_infix_len = 3
min_word_len = 3
# Кодировка
#charset_type = utf-8
}
Последнее редактирование: