首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Whoosh,我无法使用多字查询搜索文档。

使用Whoosh,我无法使用多字查询搜索文档。
EN

Stack Overflow用户
提问于 2012-09-09 12:02:45
回答 1查看 1.8K关注 0票数 1

使用Whoosh,我无法使用多字查询搜索文档。我使用了http://packages.python.org/Whoosh/quickstart.html#the-searcher-object中描述的And运算符,但它显示了错误。单字搜索起作用。

代码语言:javascript
复制
from whoosh.index import create_in
from whoosh.fields import *
from whoosh.qparser import QueryParser
from whoosh.fields import Schema, TEXT, KEYWORD, ID, STORED
from whoosh.analysis import StemmingAnalyzer
from whoosh.query import *
import os.path

##Schema

schema = Schema(title=TEXT(stored=True), path=ID(stored=True), content=TEXT)

##Indexing

if not os.path.exists("index"):
    os.mkdir("index")

ix = create_in("index", schema)

writer = ix.writer()
writer.add_document(title=u"First document", path=u"/a", content=u"Michael Jackson")
writer.add_document(title=u"Second document", path=u"/b", content=u"Roger Federer")
writer.add_document(title=u"Third document", path=u"/c", content=u"Michael Jordan")
writer.add_document(title=u"Fifth document", path=u"/d", content=u"Michael Phelps")
writer.add_document(title=u"Sixth document", path=u"/e", content=u"Michael Schumacher")
writer.add_document(title=u"Seventh document", path=u"/f", content=u"Michael Dell")
writer.add_document(title=u"Eigth document", path=u"/g", content=u"Michael Akerfeldt")
writer.commit()


##Searching

searcher = ix.searcher()

#Single Word Search:
#myquery = u'Michael'

#Multiword Search:
myquery = And([Term("content", u'Roger'), Term("content", u'Michael')])

#query = QueryParser("content", schema=ix.schema).parse(myquery)

parser = QueryParser("content", ix.schema)
query = parser.parse(myquery)

#with ix.searcher() as searcher:

results = searcher.search(query, limit=None)

print "Length of Results :", len(results)
print "\nResults : "
for i in range (0,len(results)):
    print results[i]
EN

回答 1

Stack Overflow用户

发布于 2012-09-09 12:13:56

我认为您对查询解析器的功能感到困惑。查询解析器将通过调用以下命令创建显式构造的And查询:

代码语言:javascript
复制
query = parser.parse("Roger and Michael")

或者,如果您真的想自己创建查询结构,那么只需直接将myquery传递给searcher.search而不是query

更多信息在这里:http://packages.python.org/Whoosh/parsing.html

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12338898

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档