2015-09-04 12 views
-1

У меня есть sphinx, установленный на моей бродящей машине с CentOs 6, и я пытаюсь установить голландский libstemmer из Snowball. Установка выполнена успешно, но тесты идут не так.libstemmer sphinx не работает

Я создал 2 индекса с точно такими же данными. Мои индексы:

index shop_products1 { 
 
    type = rt 
 
    dict = keywords 
 
    min_prefix_len = 3 
 
    rt_mem_limit = 2046M 
 

 
    path = /var/lib/sphinxsearch/data/shop_products2 
 

 
    morphology = libstemmer_nl, stem_en 
 
    
 
    html_strip = 1 
 
    html_index_attrs = img=alt,title; a=title; 
 

 
    preopen = 1 
 
    inplace_enable = 1 
 
    index_exact_words = 1 
 

 
    
 
    rt_field = name 
 
    rt_field = brand 
 
    rt_field = description 
 
    rt_field = specifications 
 
    rt_field = tags 
 
    rt_field = ourtags 
 
    rt_field = searchfield 
 
    rt_field = shop 
 
    rt_field = category 
 
    
 
    rt_field = color 
 
    rt_field = ourcolor 
 
    rt_field = gender 
 
    rt_field = material 
 

 
    rt_field = ean 
 
    rt_field = sku 
 

 
    rt_attr_string = ean 
 
    rt_attr_string = sku 
 
    rt_attr_float = price 
 
    rt_attr_float = discount 
 
    rt_attr_uint = shopid 
 
    rt_attr_uint = itemid 
 
    rt_attr_uint = deleted 
 
    rt_attr_uint = duplicate 
 
    rt_attr_uint = brandid 
 
    rt_attr_uint = duplicates 
 
    rt_attr_timestamp = updated_at 
 
} 
 

 
index shop_products2 { 
 
    type = rt 
 
    dict = keywords 
 
    min_prefix_len = 3 
 
    rt_mem_limit = 2046M 
 

 
    path = /var/lib/sphinxsearch/data/shop_products20 
 

 
    html_strip = 1 
 
    html_index_attrs = img=alt,title; a=title; 
 

 
    preopen = 1 
 
    inplace_enable = 1 
 
    index_exact_words = 1 
 

 
    
 
    rt_field = name 
 
    rt_field = brand 
 
    rt_field = description 
 
    rt_field = specifications 
 
    rt_field = tags 
 
    rt_field = ourtags 
 
    rt_field = searchfield 
 
    rt_field = shop 
 
    rt_field = category 
 
    
 
    rt_field = color 
 
    rt_field = ourcolor 
 
    rt_field = gender 
 
    rt_field = material 
 

 
    rt_field = ean 
 
    rt_field = sku 
 

 
    rt_attr_string = ean 
 
    rt_attr_string = sku 
 
    rt_attr_float = price 
 
    rt_attr_float = discount 
 
    rt_attr_uint = shopid 
 
    rt_attr_uint = itemid 
 
    rt_attr_uint = deleted 
 
    rt_attr_uint = duplicate 
 
    rt_attr_uint = brandid 
 
    rt_attr_uint = duplicates 
 
    rt_attr_timestamp = updated_at 
 
} 
 

 

 

 

 
searchd { 
 
\t listen = 127.0.0.1:9306:mysql41 
 
    log = /var/log/sphinxsearch/searchd.log 
 
    workers = threads 
 
    binlog_path = /var/lib/sphinxsearch/rt-binlog 
 

 
    read_timeout = 5 
 
    client_timeout = 200 
 
    max_children = 0 
 
    \t 
 
    # 2 hours 
 
    rt_flush_period = 7200 
 
    pid_file = /var/run/searchd.pid 
 
    
 
}

Когда я поиск, например, голландское слово «afzuigkappen» он должен дать те же результаты, как «afzuigkap»

Может кто-то дать мне некоторые информация о том, как получить эту работу, пожалуйста? Пс. извините за мой плохой английский ..

ответ

0

Голландская стеммер в снежный ком стебли afzuigkappen и afzuigkap по-разному:

afzuigkappen -> afzuigkapp 
afzuigkap -> afzuigkap 

Таким образом, вы должны обновить алгоритм стеммер для того, чтобы присутствовать на вашей цели, документации об алгоритме here

+0

Oke, но, по крайней мере, в результатах должна быть разница сомов. Теперь, по моему мнению, он ничего не делает, потому что индекс 1 делает точно так же, как индекс 2 .. –

+0

они не дают одинаковых результатов, потому что стебель отличается –

0

Хорошо, я создал некоторые конкретные тесты. Моего индекса я создал:

index test1 { 
 
    type = rt 
 
    dict = keywords 
 
    min_prefix_len = 3 
 
    rt_mem_limit = 2046M 
 

 
    morphology = libstemmer_nl, stem_en 
 

 
    path = /var/lib/sphinxsearch/data/test1 
 

 
    preopen = 1 
 
    inplace_enable = 1 
 
    index_exact_words = 1 
 

 
    rt_field = name 
 
    rt_attr_uint = shopid 
 
    rt_attr_uint = itemid 
 
    
 
} 
 

 
index test2 { 
 
    type = rt 
 
    dict = keywords 
 
    min_prefix_len = 3 
 
    rt_mem_limit = 2046M 
 

 
    path = /var/lib/sphinxsearch/data/test2 
 

 
    preopen = 1 
 
    inplace_enable = 1 
 
    index_exact_words = 1 
 

 
    rt_field = name 
 
    rt_attr_uint = shopid 
 
    rt_attr_uint = itemid 
 
    
 
}

я индексироваться с меньшими базами данных с футбольными продуктами и обыскал с сфинкса в качестве результатов: http://imgur.com/n95Ue8v

Как вы видите, оба дают тот же результат с 53 записями. Если я ищу только в моем mysql: select * from tests1 WHERE name LIKE '% keeper%' i получил 360 результатов.

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

  • Нет связанных вопросов^_^