Advertisement
Guest User

Whoosh range search results

a guest
Apr 16th, 2012
20
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.92 KB | None | 0 0
  1. #!/usr/bin/env python2
  2.  
  3. import os
  4. from pprint import pprint
  5.  
  6. from whoosh import versionstring
  7. from whoosh.fields import Schema, NUMERIC, TEXT, ID
  8. import whoosh.index as index
  9. from whoosh.qparser import QueryParser, plugins
  10.  
  11. print "Whoosh Version:", versionstring()
  12.  
  13. values = [{'num1':u'1', 'num2':1, 'num3':u'1'},
  14.           {'num1':u'10', 'num2':10, 'num3':u'10'},
  15.           {'num1':u'100', 'num2':100, 'num3':u'100'},
  16.           {'num1':u'1000', 'num2':1000, 'num3':u'1000'},
  17.           {'num1':u'2', 'num2':2, 'num3':u'2'},
  18.           {'num1':u'20', 'num2':20, 'num3':u'20'},
  19.           {'num1':u'200', 'num2':200, 'num3':u'200'},
  20.           {'num1':u'2000', 'num2':2000, 'num3':u'2000'},
  21.           {'num1':u'9', 'num2':9, 'num3':u'9'},
  22.           {'num1':u'90', 'num2':90, 'num3':u'90'},
  23.           {'num1':u'900', 'num2':900, 'num3':u'900'},
  24.           {'num1':u'9000', 'num2':9000, 'num3':u'9000'},
  25.           {'num1':u'1', 'num2':u'1', 'num3':u'1'},
  26.           {'num1':u'10', 'num2':u'10', 'num3':u'10'},
  27.           {'num1':u'2', 'num2':u'2', 'num3':u'2'},
  28.           {'num1':u'20', 'num2':u'20', 'num3':u'20'},
  29.           {'num1':u'5', 'num2':u'5', 'num3':u'5'},
  30.           {'num1':u'55', 'num2':u'55', 'num3':u'55'},
  31.           {'num1':u'555', 'num2':u'555', 'num3':u'555'},
  32.           {'num1':u'5555', 'num2':u'5555', 'num3':u'5555'}, ]
  33.  
  34. searchstring = [u'num1:>55', u'num2:>55', u'num3:>55']
  35.  
  36. schema = Schema(num1=ID(stored=True),
  37.                 num2=NUMERIC(stored=True, signed=False),
  38.                 num3=TEXT(stored=True))
  39.  
  40. if not os.path.exists("testindexdir"):
  41.     os.mkdir("testindexdir")
  42.  
  43. ix = index.create_in("testindexdir", schema, indexname='test1')
  44.  
  45. writer = ix.writer()
  46.  
  47. for element in values:
  48.     writer.add_document(**element)
  49.  
  50. writer.commit()
  51.  
  52. for ss  in searchstring:
  53.     with ix.searcher() as s:
  54.         qp = QueryParser("content", ix.schema,
  55.                          [plugins.FieldsPlugin(),
  56.                           plugins.RangePlugin(),
  57.                           plugins.GtLtPlugin()
  58.                          ])
  59.         q = qp.parse(ss)
  60.         pprint(q)
  61.         results = s.search(q, limit=None)
  62.         pprint([i.fields() for i in results])
  63.  
  64. #Output:
  65. """
  66. Whoosh Version: 2.3.2
  67. TermRange(u'num1', u'55', None, True, False, boost=1.0, constantscore=True)
  68. [{'num1': u'9', 'num2': 9, 'num3': u'9'},
  69. {'num1': u'90', 'num2': 90, 'num3': u'90'},
  70. {'num1': u'900', 'num2': 900, 'num3': u'900'},
  71. {'num1': u'9000', 'num2': 9000, 'num3': u'9000'},
  72. {'num1': u'555', 'num2': u'555', 'num3': u'555'},
  73. {'num1': u'5555', 'num2': u'5555', 'num3': u'5555'}]
  74. NumericRange(u'num2', 55, None, True, False, boost=1.0, constantscore=True)
  75. [{'num1': u'1', 'num2': 1, 'num3': u'1'},
  76. {'num1': u'10', 'num2': 10, 'num3': u'10'},
  77. {'num1': u'100', 'num2': 100, 'num3': u'100'},
  78. {'num1': u'1000', 'num2': 1000, 'num3': u'1000'},
  79. {'num1': u'2', 'num2': 2, 'num3': u'2'},
  80. {'num1': u'20', 'num2': 20, 'num3': u'20'},
  81. {'num1': u'200', 'num2': 200, 'num3': u'200'},
  82. {'num1': u'2000', 'num2': 2000, 'num3': u'2000'},
  83. {'num1': u'9', 'num2': 9, 'num3': u'9'},
  84. {'num1': u'90', 'num2': 90, 'num3': u'90'},
  85. {'num1': u'900', 'num2': 900, 'num3': u'900'},
  86. {'num1': u'9000', 'num2': 9000, 'num3': u'9000'},
  87. {'num1': u'1', 'num2': u'1', 'num3': u'1'},
  88. {'num1': u'10', 'num2': u'10', 'num3': u'10'},
  89. {'num1': u'2', 'num2': u'2', 'num3': u'2'},
  90. {'num1': u'20', 'num2': u'20', 'num3': u'20'},
  91. {'num1': u'5', 'num2': u'5', 'num3': u'5'},
  92. {'num1': u'55', 'num2': u'55', 'num3': u'55'},
  93. {'num1': u'555', 'num2': u'555', 'num3': u'555'},
  94. {'num1': u'5555', 'num2': u'5555', 'num3': u'5555'}]
  95. TermRange(u'num3', u'55', None, True, False, boost=1.0, constantscore=True)
  96. [{'num1': u'90', 'num2': 90, 'num3': u'90'},
  97. {'num1': u'900', 'num2': 900, 'num3': u'900'},
  98. {'num1': u'9000', 'num2': 9000, 'num3': u'9000'},
  99. {'num1': u'555', 'num2': u'555', 'num3': u'555'},
  100. {'num1': u'5555', 'num2': u'5555', 'num3': u'5555'}]
  101. """
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement