所以,我设置了一个Sphinx配置文件。我有一个非常简单的模式,有两个字段,标题和正文,其中标题是小说的名字,正文是完整的小说本身。为了简单起见,我只加了一本小说。索引器工作得很好,pythonapi使查询sphinxd变得轻而易举。到目前为止我真的印象深刻,这似乎是我研究过的最容易建立全文搜索引擎(比Lucene或Solr容易得多,比Woosh快得多)。在
我跳过了任何数据库后端。我有纯文本格式的小说,我添加了 使用这个简单的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”的意思,我确信这个词就是文件。事实上,被发现了三次,我想这就是斯芬克斯返回给我的('hits': 3
)。这是完整的结果:
最后,我想要的是这样:
[
{
'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.'
},
]
我的意思是,节选书中出现的一系列事件以及上下文中的单词(我选择了判决,但是在匹配之前或之后的单词都可以)。我想我必须使用BuildExtracts,但是怎么用呢?在
另外,如果我想同时匹配tartartaruga(turtles)和tartarughe(turtles),我想发出一个类似tartarug*
的查询。怎么做到这是斯芬克斯?提前谢谢。在
我为我工作的项目做同样的事情。我的建议是,将整本书作为一个单独的字段加载不是一个好主意,除非你只处理一本书,而不是很多书。我是这样做的。在
您可以编写一个python脚本(我使用从bashshell运行的PHP脚本),一次提取一个页面的文本,对其进行清理,然后将其添加到数据库中。在
你需要一个至少有两个表的数据库
books (fields could be called, id, name, author)
pages (fields would be id, book_id, page_text)
Sphinx将返回一个页面id,然后使用一个简单的查询从MySQL获取页面。。。在
SELECT page_text FROM pages WHERE id = $idreturnedbysphinx;
然后将返回的文本发送到文本摘录器/文本高亮显示器。在
Sphinx可以搜索精确的单词或词干的单词(以及更多),但是您需要在狮身人面像.conf文件。在
至少需要两个索引定义:
然后还需要在sphinx搜索中指定要使用的匹配模式。我不知道python语法,但sphinx手册对它的阐述比我所能做的更好: http://sphinxsearch.com/docs/current.html#matching-modes
你可以不使用SQL数据库来完成所有这些,并将其保存在文本文件中,但我可能会选择每页一个文本文件作为更易于管理的工作方式,否则你将返回整个电子书作为搜索结果。在
相关问题 更多 >
编程相关推荐