Я использую Sphinx для предоставления веб-страницы поиска для огромного набора данных, недавно я обновил Sphinx с v2.1.8 до v2.2.4
У меня были некоторые проблемы в конфигурационном файле, одна из них — это то, что опция enable_star была удалена, что повлияло на ожидаемые результаты на моей странице поиска, поэтому, если поиск по ‘rea’ не вернет ‘real madrid’, пока я не завершу ввод «Реальный», та же проблема на словах заканчивается «Мадрид».
Ожидаемые результаты, если я искал «сумасшедший»:
В моем случае я получаю «Mad-Croc» и «Mad Bla».
Вот часть моего конфигурационного файла:
docinfo = extern
mlock = 0
morphology = stem_en
min_word_len = 1
expand_keywords = 1
dict = keywords
PHP-код:
$_sphinx = new SphinxClient();
$_sphinx->SetServer('............', '....');
$_sphinx->SetMatchMode(SPH_MATCH_ANY);
$_sphinx->SetFieldWeights(array('auther_name' => 50));
$_sphinx->SetArrayResult(true);
$_sphinx->SetSortMode(SPH_SORT_EXTENDED2, 'cat_priority DESC, @weight DESC');
//////////////////
$_result = $_sphinx->Query($searchTerm . '*');
может ли любое тело искать это.
Вы, кажется, не имеете min_prefix_len
настройте индекс, предложите добавить его.
Хотя не уверен, как ваш индекс когда-либо работал, как min_prefix_len
, потребуется для enable_star=0
иметь эффект.
Это должно позволить expand_keywords
творить свою магию. При какой постановке вопроса предложите удалить * в конце запроса. Который влияет только на последнее введенное слово, и * должен автоматически добавляться expand_keywords
настройка в любом случае.
Других решений пока нет …