在PY嗖嗖全文搜索工程师中,如何创建查询以查找范围内的值?

时间:2014-11-17 21:20:35

标签: python whoosh

我试图在特定范围内按值查找文档。 官方文档没有给出不同类型的字段和搜索方法的示例。 任何聪明人都可以给我一个更多示例和应用程序的链接?任何提示?

谢谢!

这是我的代码,

from whoosh.index import create_in
from whoosh.fields import *
from whoosh.qparser import QueryParser

schema = Schema(temperature=NUMERIC(float, stored=True))
ix = create_in("indexdir", schema)

writer = ix.writer()
writer.add_document(temperature = 32.3)
writer.commit()

with ix.searcher() as searcher:
    query = QueryParser("temperature", ix.schema).parse("temperature:>20.0") ## should be something like this
    print(searcher.search(query)[0])

1 个答案:

答案 0 :(得分:1)

范围查询语法为[START to END],例如STARTEND是表示范围界限的数字。如果没有定义结束,则[ START to]。如果没有定义任何开始,则[to END]

在您的情况下,如果温度高于20.0,请使用temperature:[20.0 to] to] 之间没有空格。

 query = QueryParser("temperature", ix.schema).parse("temperature:[ 20 to 1000 ]")

您还可以使用whoosh.query.NumericRange

  

类whoosh.query.NumericRange(fieldname,start,end,startexcl = False,endexcl = False,boost = 1.0,constantscore = True)

query = NumericRange(u'temperature', 20.0, None)

参考:Query lang - Ranges