Я пробовал поиск в Интернете, но я не уверен, что моя терминология неверна или у меня неправильная идея о том, как использовать Sphinx.Использование Sphinx для индексирования таблицы MySQL
Мне нужна помощь в создании и поиске индекса таблицы из базы данных с использованием чего-то вроде сфинкса. Я запускаю Ubuntu 14.04 LTS.
Мой сфинкс файл конфигурации выглядит следующим образом:
source db1
{
sql_host = localhost
sql_user = user1
sql_pass = pswd123
sql_db = db1
sql_port = 3306
type = mysql
sql_query = SELECT * FROM MetaData;
}
index myidx
{
source = mureinome
path = /var/lib/sphinxsearch/data/myidx
docinfo = extern
# Added after suggestion from Mihai
min_stemming_len = 1
min_word_len = 1
dict = keywords
}
indexer
{
mem_limit = 1000M
write_buffer = 50M
}
searchd
{
listen = 9312
listen = 9306:mysql41
pid_file = /var/run/sphinxsearch/searchd.pid
binlog_path = /var/lib/sphinxsearch/data
}
Чтобы проиндексировать таблицу я бегу:
[email protected]:/var/lib/sphinxsearch# indexer myidx --rotate
Sphinx 2.2.10-id64-release (2c212e0)
Copyright (c) 2001-2015, Andrew Aksyonoff
Copyright (c) 2008-2015, Sphinx Technologies Inc (http://sphinxsearch.com)
using config file '/etc/sphinxsearch/sphinx.conf'...
indexing index 'myidx'...
WARNING: Attribute count is 0: switching to none docinfo
collected 1 docs, 0.0 MB
sorted 0.0 Mhits, 100.0% done
total 1 docs, 459 bytes
total 0.005 sec, 80286 bytes/sec, 174.91 docs/sec
total 3 reads, 0.000 sec, 0.6 kb/call avg, 0.0 msec/call avg
total 9 writes, 0.000 sec, 0.6 kb/call avg, 0.0 msec/call avg
rotating indices: successfully sent SIGHUP to searchd (pid=2444).
Но когда я пытаюсь искать индекс я получаю пустой результат:
SELECT * FROM myidx WHERE MATCH('FC') LIMIT 0,5;
Empty set (0.00 sec)
В MySQL Одна из столбцов в таблице выглядит так:
mysql> select SampleName from MetaData;
+-----------------+
| SampleName |
+-----------------+
| FCPG1048_S1S2S3 |
+-----------------+
1 row in set (0.00 sec)
Я неправильно индексирую таблицу или я искал индекс неправильно? Любая помощь приветствуется.
Не знаю много о Sphinx, но в Mysql при выполнении поиска FULLTEXT существует минимальная длина слова, см. Здесь в разделе «Конфигурирование минимальной и максимальной длины слов» http://dev.mysql.com/doc/refman/5.6 /en/fulltext-fine-tuning.html Я не знаю, как это переводится в Sphinx. Просто используйте более длинное слово для поиска, чтобы проверить его. – Mihai
Вне курса кажется настолько очевидным, что вы это говорите! Поиск всей строки работает. –
Также следите за списком прекрасных слов, которые настолько распространены, что игнорируются https://dev.mysql.com/doc/refman/5.6/en/fulltext-stopwords.html – Mihai