【发布时间】:2012-02-07 19:46:32
【问题描述】:
所以,我已经设置了一个 Sphinx 配置文件。我有一个非常简单的模式,有两个字段,标题和正文,其中标题是小说的名称,正文是完整的小说本身。为了简单起见,我只添加了一本小说。索引器工作得很好,Python API 使查询 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”,它是意大利语的“turtle”,我确定这个词就是文件。事实上,被找到了 3 次,我猜这就是 Sphinx 给我的回报 ('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 可以做到这一点,你可以在这里找到一个例子:sphinxsearch.com/wiki/… 我不确定 python API 是否有同样的
-
hmmm,这是否意味着如果我有来自 100 本书的 100 个匹配项,我必须在内存中加载 100 部小说?
-
是的。您需要加载文本,然后将其发送到 sphinx 以构建摘录。
标签: python full-text-search sphinx