逗号分隔多个关键字搜索

时间:2013-11-18 04:53:15

标签: python sqlite web.py

我正在使用Web.py和sqlite3.I有一个库目录存储在数据库中,具有以下架构

booklog(id,book_name,author,genre,language)

我想通过单个文本字段搜索数据库。例如,如果我输入XYZ,我会得到XYZ出现的所有结果,无论是作者/书籍名称/流派。我通过简单的OR查询获得此结果。我现在遇到的问题是当我想通过相同的文本字段搜索由逗号分隔的多个关键字时。结果应该是包含两个关键字后跟单个关键字匹配的行。

我能够将关键字拆分为列表并进行搜索。但是我无法使用降序匹配对表进行排序,整理的nocase也无法在列表中运行:

 inp=web.input()
 key=inp.search.split(',')
 myvar=dict(t=key)
 result=db.query("select * from booklog where book_name in $t collate nocase or author in $t collate nocase or genre in $t collate nocase ",myvar)
 return render.bookview(result)

在web.py中有没有其他方法可以做到这一点?我对python / web.py / sqlite3相对较新

1 个答案:

答案 0 :(得分:1)

您可能希望使用Solr等全文搜索引擎。诸如此类的引擎会自动按照您希望的方式对结果进行排名。

如果您仍想单独使用sqlite3,请查看其Full Text Search Extension

特别是,在this section中查找词组查询。通过支持短语查询,您甚至不需要将输入字符串拆分为列表。