В документации встречается понятие secondary index - но нигде не нашел как его создавать.
Вот, например есть plain таблица с текстовыми полями и полем multi
source eshop {
type = mysql
sql_host = mysql
sql_user = root3
sql_pass = root3
sql_db = manticore_db
sql_query_pre = SET NAMES utf8
sql_query = select id,name,description,categories, categories_int, price, type,brand,hierarchicalCategories,price_range,popularity,rating,objectID,categories2,catalog_desc from algolia_records
sql_field_string = name
sql_field_string = description
sql_attr_multi=uint categories_int from field
sql_attr_float = price
sql_attr_string = type
sql_attr_string = brand
sql_attr_string = hierarchicalCategories
sql_attr_string = price_range
sql_attr_uint = popularity
sql_attr_uint = rating
sql_attr_string=objectID
sql_attr_string=categories2
sql_attr_json=catalog_desc
}
table eshop {
type = plain
path = /var/lib/manticore/eshop/eshop_plain
source = eshop
charset_table=russian, 0..9, english, _
morphology=lemmatize_ru, lemmatize_en
wordforms=/var/lib/manticore/wordforms/wordforms.txt
index_exact_words=1
min_prefix_len=2
min_infix_len =2
index_field_lengths=1
bigram_index=all
dict=keywords
}
когда пишешь sql_field_string - это значит что создается полнотекстовый индекс и ты можешь искать по индексу.
Что происходит с остальными полями?
Правильно я понимаю что для них индексы автоматически не создаются?
Попробовал посмотреть план выполнения запроса способом, указанным в документации - но он почему то ничего не показал.
set profiling=1;
select id from eshop where any(categories_int)=1;
show plan;
set profiling=0;
Я подозреваю что такой запрос выполнит full scan.
Кстати как правильно искать в multi полях? (так как я написал - или по другому?)
Как написать запрос если мне надо найти совпадение в multi поле вида:
any(categories_int)=1 or any(categories_int)=2 or any(categories_int)=3 …
Вопрос:
как создавать secondary index, которые позволят искать как по текстовому полю так и по содержимому полей- атрибутов по индексу полей атрибутов (не полным перебором)