Сфинкс возвращая плохие результаты поиска

В методе getService вы должны использовать var ItemList = Res.Value; вместо var ItemList = Res.Result;

public async Task<List<items>> getService(List<string> ids)
{
    var IdentificationIdsToOrder = new JObject();
    foreach (var id in ids)
    {
        var newId = new JProperty("ids", id);
        IdentificationIdsToOrder.Add(newId);
    }

    _controller = new getitems();
    var Res = await _controller.getitems();         
    var ItemList = Res.Value;
    return ItemList;

}
5
задан Tony 15 April 2009 в 23:12
поделиться

1 ответ

Если у вас enable_star не установлено 1 и min_prefix_len или min_infix_len установлен в 1 или более, вы не получите B, чтобы соответствовать Балтимору (и даже тогда, я думаю, вам нужно искать B *, чтобы получить совпадение).

Что происходит здесь, так это то, что по умолчанию , Thinking Sphinx говорит Sphinx использовать английский стеммер, который позволяет подобным словам (по символам, а не по значению) считаться совпадающими, поэтому он ставит Baltimor и Baltimore в той же корзине.

Если вы хотите, чтобы любая часть любого слова соответствовала, то вам нужно поместить что-то вроде следующего в config / sphinx.yml:

development:
  enable_star: 1
  min_infix_len: 1
test:
  enable_star: 1
  min_infix_len: 1
production
  enable_star: 1
  min_infix_len: 1

Затем остановите Sphinx, переиндексируйте, и перезапустите Сфинкса. Как только вы это сделаете, поиск B * вернет Балтимор.

Надеюсь, это поможет.

6
ответ дан 14 December 2019 в 13:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: