Итак, я настроил файл конфигурации Sphinx.У меня есть очень простая схема с двумя полями, заголовок и тело, где заголовок - это название романа, а тело - сам роман.Для простоты я добавил только один роман.Индексатор работал просто отлично, а API-интерфейс Python сделал запрос sphinxd быстрым.Я до сих пор очень впечатлен, это кажется самым простым в настройке механизма полнотекстового поиска, который я исследовал до сих пор (намного проще, чем Lucene или Solr и быстрее, чем Woosh).
Я пропустил любую БДбэкенд.У меня есть свои романы в простом формате .txt, и я добавил пример с этим простым xml (через xmlpipe)
<?xml version="1.0" encoding="utf-8"?>
<sphinx:docset>
<sphinx:document id="1">
<title><![CDATA[Dan Simmons - I Canti di Hyperion 3 - Endymion]]></title>
<body><![CDATA[ * ALL THE NOVEL HERE * ]]></body>
</sphinx:document>
</sphinx:docset>
Кстати, я ищу в архиве «tartaruga», этоитальянский для "черепаха", и я уверен, что слово это файл.На самом деле, найден три раза, и я думаю, это то, что Сфинкс возвращает мне ('hits': 3
).Вот полный результат:
{'attrs': [],
'error': '',
'fields': ['title', 'body'],
'matches': [{'attrs': {}, 'id': 1, 'weight': 1}],
'status': 0,
'time': '0.392',
'total': 1,
'total_found': 1,
'warning': '',
'words': [{'docs': 1, 'hits': 3, 'word': 'tartaruga'}]}
В конечном итоге я хочу получить что-то вроде этого:
[
{
'title': 'Dan Simmons - I Canti di Hyperion 3 - Endymion',
'body': 'il vecchio mostrò quel suo sorriso a becco di tartaruga. — non bisogna dimenticare il palazzo dello shrike, né il nostro vecchio amico shrike, giusto? non ce ne sono altre?'
},
{
'title': 'Dan Simmons - I Canti di Hyperion 3 - Endymion',
'body': '— vieni più vicino, raul endymion. — la voce pareva il rumore di una lama spuntata che sfregasse su pergamena. le labbra si muovevano come il becco d\'una tartaruga.'
},
{
'title': 'Dan Simmons - I Canti di Hyperion 3 - Endymion',
'body': 'il becco di tartaruga ebbe una contrazione, la grossa testa si mosse in un cenno d\'assenso. notai ora che il viso del vecchio, malgrado i danni provocati dai secoli, aveva ancora tratti netti e spigolosi... un\'aria da satiro.'
},
]
Я имею в виду массив событий с книгойвзят отрывок и слово из контекста (я выбрал предложения, но n слова до или после совпадения будут работать).Я думаю, что я должен использовать BuildExcerpts, но как?
Кроме того, если я хочу сопоставить как tartaruga (черепаха), так и tartarughe (черепахи), я бынравится выдавать запрос как tartarug*
.Как это сделать Сфинкс?Заранее спасибо.