2015-08-25 3 views
0

Строка с автором и его книга. В индексе есть два поля: author и title. Мне нужно найти все книги, где совпадают авторские и титульные матчи. Строка может содержать только автора или только заголовок, поэтому я не могу разобрать его. Если я ищуSphinxql: несколько полей, соответствующих

SELECT id FROM books 
WHERE MATCH('@(author, title) "jane smiley horse heaven"); 

, я не получаю самую актуальную книгу автора = «джейн смайлик» и название = «конского небо».

мне нужно что-то вроде

SELECT id FROM books 
WHERE MATCH('@(title) "horse heaven" @(author) "jane smiley"'); 

, но без разделения строки.

Возможно ли это?

ответ

1

MATCH ('@ (автор, название) "jane smiley horse heaven"');

запрашивает эту точную фразу (цитаты - оператор фразы). т.е. эти четыре слова, последовательные в тексте. Как вы говорите, что обычно не совпадают.

Вместо

MATCH('@(author,title) (jane smiley horse heaven)'); 

должно означать, что только требует эти слова. Но в любом поле и технически в любом порядке (так что может сравниться с «jane heaven, конский нарисованный смайлик» или что-то еще;)

+0

Я думаю, между 'MATCH ('@ (author, title)' не должно быть пробела ') ', например имена колонок – Novitoll

+0

Хорошо пятнистый. Да, там не должно быть места. Я думаю, возможно, некоторые версии sphinx более прощающие, но текущая версия не нравится это пространство. – barryhunter