Сфинкс: начало поля и конец поля расширенный2 поиск не работает - PullRequest
1 голос
/ 25 марта 2012

Я знаю, что «не работает» никогда не было хорошим началом, когда я обращался за помощью, но я занимался этим несколько месяцев и практически ничего не получил.

До сих пор я, по крайней мере, определил, что МОГУ работать, чтобы операторы начала / конца поля работали, но ТОЛЬКО когда я вставляю пробел, например:

@gametitle "^diablo$ "

Странно, но возвращается просто игра Diablo, однако:

@gametitle "^diablo$"

Возвращает ВСЕ игры с Diablo в названии. Теперь это замечательно, я, очевидно, могу положиться на тот факт, что этот лишний пробел применит правильное совпадение названий игр (похоже, он работает и с "^age of empires$ ").

Однако, когда дело доходит до моего ДРУГОГО поля, то, которое я действительно хочу сделать для этого полного соответствия полей (@console), мне не повезло. Я просто не получаю результатов (если я пытаюсь сделать "^PlayStation$ "), или же я получаю все результаты с PlayStation в поле консоли (т. Е. PS1 / 2/3 и портативный), когда я * "^PlayStation$".

Теперь единственное различие между полями @gametitle и @console состоит в том, что поле консоли содержит несколько пустых записей. Я попытался обойти это, выбрав строку «NULL» с оператором IF в MySQL (это мой источник), но без радости. Кроме того, в MySQL поля консоли и названия игры - VARCHAR (255).

Я надеюсь, что у кого-то будет какой-то момент с тем, что я упомянул в отношении дополнительного пространства, заставляющего эту вещь работать, но я не задерживаю дыхание! В любом случае хватит моего пессимизма, с нетерпением жду ваших мыслей.

Я использую PHP API, предоставляемый sphinx, который я расширяю, чтобы внести незначительные изменения. Я запрашиваю экземпляр searchd, который является Sphinx v1.10-beta. Вот журналы запросов:

[...] 0.024 sec [ext2/1/attr- 7 (0,50)] [application] @gametitle "^age of empires$"
[...] 0.024 sec [ext2/1/attr- 1 (0,50)] [application] @gametitle "^age of empires$ "

Там вы действительно можете увидеть, как добавление пробела сбивает счет записи с 7 до 1, тогда как на самом деле вы должны ожидать, что они оба вернут 1 ...

1 Ответ

1 голос
/ 26 марта 2012

Я почти уверен, что это ошибка в Сфинксе.

Я добавил его в систему отслеживания проблем http://sphinxsearch.com/bugs/view.php?id=909

, но пока он не был подтвержден

...