2015-10-15 5 views
0

Я пробовал поиск в Интернете, но я не уверен, что моя терминология неверна или у меня неправильная идея о том, как использовать 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) 

Я неправильно индексирую таблицу или я искал индекс неправильно? Любая помощь приветствуется.

+0

Не знаю много о Sphinx, но в Mysql при выполнении поиска FULLTEXT существует минимальная длина слова, см. Здесь в разделе «Конфигурирование минимальной и максимальной длины слов» http://dev.mysql.com/doc/refman/5.6 /en/fulltext-fine-tuning.html Я не знаю, как это переводится в Sphinx. Просто используйте более длинное слово для поиска, чтобы проверить его. – Mihai

+0

Вне курса кажется настолько очевидным, что вы это говорите! Поиск всей строки работает. –

+0

Также следите за списком прекрасных слов, которые настолько распространены, что игнорируются https://dev.mysql.com/doc/refman/5.6/en/fulltext-stopwords.html – Mihai

ответ

1

Чтобы включить часть слова сопрягая необходимость использовать min_prefix_len или min_infix_len

http://sphinxsearch.com/docs/current.html#conf-min-prefix-len

После того, как сделали это можно использовать * в запросе. Или используйте expand_keywords, чтобы сделать это автоматически.

+0

Отлично, он работает так, как я намеревался сейчас! Спасибо –

Смежные вопросы