index ind4
{
#main settings
source= ind4
type = rt
path = /var/lib/sphinxsearch/data/ind4
docinfo = extern #
wordforms = /etc/sphinxsearch/wordforms/wordforms.txt
exceptions = /etc/sphinxsearch/exceptions/exceptions.txt
#choose appropriate type of morphology to use
#morphology = lemmatize_ru_all, lemmatize_en_all, lemmatize_de_all, stem_enru
morphology = lemmatize_ru_all, lemmatize_en_all
#morphology = stem_enru, soundex
#these settings are used by bitrix:search.title component
#prefix_fields =title
#infix_fields=
rt_mem_limit = 512M
ondisk_attrs = 1
min_prefix_len = 2 #
#min_word_len = 1 #
#min_infix_len = 2 #
min_stemming_len =2
expand_keywords = 1
index_exact_words = 1
#all fields must be defined exactly as followed
rt_field = title
rt_field = body
rt_attr_uint = module_id
rt_attr_string = module
rt_attr_uint = item_id
rt_attr_string = item
rt_attr_uint = param1_id
rt_attr_string = param1
rt_attr_uint = param2_id
rt_attr_string = param2
rt_attr_timestamp = date_change
rt_attr_timestamp = date_to
rt_attr_timestamp = date_from
rt_attr_uint = custom_rank
rt_attr_multi = tags
rt_attr_multi = right
rt_attr_multi = site
rt_attr_multi = param
#depends on settings of your site
# uncomment for single byte character set
#charset_type = sbcs
# uncomment for UTF character set
# charset_type = utf-8
charset_table = 0..9, A..Z->a..z, x->U+0445, c->U+0441, _, a..z, \
U+410..U+42F->U+430..U+44F, U+430..U+44F, U+401->U+0435, U+451->U+0435
blend_chars = U+002C, U+2010, U+2012, U+2013, U+2014, U+2044, U+002F, U+002D, U+2d, /, U+005C, U+0027
}
common{
lemmatizer_base = /etc/sphinxsearch/dicts/
}
private function GetSphinxKeyword($sQuery)
{
$aRequestString=preg_split('/[\s,-]+/', $sQuery, 5);
if ($aRequestString) {
foreach ($aRequestString as $sValue)
{
if (strlen($sValue)>3)
{
$aKeyword[] .= "(".$sValue." | *".$sValue."*)";
}
}
$sSphinxKeyword = implode(" & ", $aKeyword);
}
return $sSphinxKeyword;
}
SphinxAPI still defaults to SPH_MATCH_ALL but that is for compatibility reasons only.
$sphinx = new SphinxClient()
и не нахожу, что очень странно...Call to a member function SetMatchMode() on null (0)
local/modules/search/options.php:143
#0: include
/bitrix/modules/main/admin/settings.php:58
#1: require_once(string)
/bitrix/admin/settings.php:2
Сам запрос к сфинксу по фразе «масла Castrol 5W40» будет выглядеть так:
(масло | *масло*) & (Castrol | *Castrol*) & (5W40 | *5W40*)
1. Да, верно
2. есть некоторое число, которое необходимо собрать из этих кратностей, используя следующие ограничения:
- если число нельзя собрать из кратностей, то необходимо найти такую сумму кратностей, которая в превышает введенное число, но при этом является наиболее близким к нему
верно
- если есть несколько вариантов как собрать из кратностей нужное число, то выбирается вариант, содержащий наименьшее число кратностей (или наименьшие номиналы кратностей или еще какое то другое условие)
верно, но меня это условие не волнует.
Короче , ситуация следующая
Есть магазин-инет, открываем карточку товара.
По данному артикулу этого товара мы продаем коробки :
а)в упаковке -20шт, -кратность 20 (кол-во коробок=4)
б)в упаковке -50шт,-кратность 50 (кол-во коробок=2)
в)в упаковке -90шт.-кратность 90 (кол-во коробок=1)
всего у нас шт-(20*4+50*2+90=270шт)
в поле ввода количества по умолчанию стоит 20шт(найменьшая кратность), если мы нажмем клавишу вверх( то увеливываем на 20 в поле-инпут станет40)
если мы поменяем значение в самом поле, то должен стоять алгоритм
если мы введем 50 или 90, то система ничего не меняет.
если мы введем 45 то система в поле инпут должна поменять на 50.
если мы введем 70 , то система должна вывести окно (ты можешь взять 70, но коробки 20 и 50)- ставим галочки
если мы введем 290 шт- система выведет (коробка 20шт-4, коробка 50шт-2, коробка 90шт -1) + заказ 20шт -ставим галки
и заказываем в корзину.