因此,我建立了一个Sphinx配置文件。我有一个非常简单的模式,有两个字段,标题和正文,其中标题是小说的名称,身体是完整的小说本身。为了简单起见,我只添加了一本小说。索引器工作得很好,Python API使查询sphinxd变得轻而易举。到目前为止,我印象深刻,这似乎是迄今为止我设置的全文搜索引擎最简单的方法(比Lucene或Solr更容易,而且比Woosh更快)。如何使用Sphinx BuildExcerpts
我跳过了任何DB后端。我有我的纯.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*
。如何做到这一点是狮身人面像?提前致谢。
我知道PHP API有BuildExceprts来做到这一点,你可以在这里找到一个例子:http://sphinxsearch.com/wiki/doku.php?id=php_api_docs#buildexcerpts_documents_index_words_options我不知道如果python API有同样的 – 2012-02-07 20:16:17
嗯,这是否意味着我必须在内存中加载100个小说,如果我有来自100本不同书籍的100个匹配? – pistacchio 2012-02-07 20:58:00
是的。你需要加载文本,然后发送给狮身人面像来构建摘录。 – barryhunter 2012-02-09 15:05:50