Поиск сфинкса по пути слова - PullRequest
0 голосов
/ 04 октября 2018

У меня есть простая таблица

id: primary
name: varchar fulltext index

, вот моя конфигурация Sphinx https://justpaste.it/1okop

Индексатор предупреждает о docinfo

Sphinx 2.2.11-id64-выпуск (95ae9a6) Copyright (c) 2001-2016, Andrew Aksyonoff Copyright (c) 2008-2016, Sphinx Technologies Inc (http://sphinxsearch.com)

с использованием файла конфигурации '/etc/sphinxsearch/sphinx.conf' ..индексирование индекса 'words' ... ПРЕДУПРЕЖДЕНИЕ: количество атрибутов равно 0: переключение на ноль docinfo собрало 10000 документов, 0,1 МБ отсортировано 0,0 Mhits, выполнено 100,0% всего 10000 документов, всего 79566 байт 0,065 с, 1210829 байт / с, 152179,20 документов/ сек всего 3 чтения, 0,000 сек, 94,6 кб / ср. вызовов, 0,0 мсек / ср. вызовов всего 9 операций записи, 0,000 сек, 47,5 кб / ср. вызовов, 0,0 мсек / ср. вызовов

Но это сказаноздесь Сфинкс: ПРЕДУПРЕЖДЕНИЕ: Количество атрибутов равно 0: переключение на ноль docinfo , что ничего серьезного.

ОК, запуск службы и поиск части слова:

SELECT *
FROM test_words
where match (name) AGAINST ('lema')
No rows.

Tha same as
SELECT *
FROM test_words
where match (name) AGAINST ('*lema*')

Нет строк.

И в то же время есть результаты для запроса

SELECT *
FROM `test_words`
where position('lema' in name)>0

насколько я могу судить - Сфинкс не ищет по части слова.Почему и как это исправить?

И - если я раскомментирую

min_infix_len = 3 
infix_fields = name

, я получу

WARNING: index 'words': prefix_fields and infix_fields has no effect with dict=keywords, ignoring

И еще один - покажем двигатели; не показывать движок сфинкса, это нормально сейчас?Служба mysql была перезапущена.

Все sql-запросы выполнялись через Adminer, зарегистрированный на localhost: 3312

1 Ответ

0 голосов
/ 04 октября 2018

В Sphinx нет таких функций, как position () или синтаксис, таких как «match (name) против».Согласно вашей конфигурации, ваш индекс - «слова», тогда как ваши запросы относятся к «test_words» - исходной таблице, из которой вы строите свой индекс.Поэтому мне кажется, что вы подключаетесь не к Sphinx, а к MySQL.Если вы ищете более тесную интеграцию между MySQL и Sphinx, попробуйте SphinxSE (http://sphinxsearch.com/docs/devel.html#sphinxse),, затем он отобразится в «ПОКАЗАТЬ ДВИГАТЕЛИ» или если вы не хотите заниматься компиляцией MySQL с включенным SphinxSE, возможно, вы захотитепопробуйте Manticore Search (ответвление от Sphinx), поскольку он интегрирован с механизмом FEDERATED (https://docs.manticoresearch.com/2.6.4/html/federated_storage_engine.html), который по умолчанию скомпилирован в mysql, вам просто нужно запустить его правильно, чтобы включить его.

Если выхотите использовать Sphinx традиционным способом, просто убедитесь, что вы подключаетесь к нему, а не к MySQL.

...