Exemple #1
0
def main(argv):
    # defaults
    query = ''
    start = 0
    nb_results = 10
    try:
        opts, args = getopt.getopt(argv, "i:q:s:r:", \
                   ["lucene_index=", "query=", "start=", "nb_results="])
    except getopt.GetoptError:
        usage()
        sys.exit(2)
    if not opts:
        usage()
        sys.exit()
    for opt, arg in opts:
        if opt in ("-i", "--lucene_index"):
            fsDir = FSDirectory.getDirectory(arg, False)
            searcher = IndexSearcher(fsDir)
        elif opt in ("-q", "--query"):
            query = arg
        elif opt in ("-s", "--start"):
            start = int(arg)
        elif opt in ("-r", "--nb_results"):
            nb_results = int(arg)
    doQuery(searcher, query, start, nb_results)
Exemple #2
0
    def searchDocuments(self, version, query, attribute=None):

        directory = DbDirectory(self.store.txn, self._db,
                                self.store._blocks._db, self._flags)
        searcher = IndexSearcher(directory)
        query = QueryParser.parse(query, "contents", StandardAnalyzer())

        docs = {}
        for i, doc in searcher.search(query):
            ver = long(doc['version'])
            if ver <= version:
                uuid = UUID(doc['owner'])
                dv = docs.get(uuid, None)
                if dv is None or dv[0] < ver:
                    docAttr = doc['attribute']
                    if attribute is None or attribute == docAttr:
                        docs[uuid] = (ver, docAttr)

        searcher.close()

        return docs
Exemple #3
0
    
    def _getdoc(self, filename, args):
        doc = "0 |"
        m = self.__class__.p.search(args)
        if m and filename == '/search':
        #    doc = doQuery(m.group(1).split('+'), int(m.group(2)), int(m.group(3)))
            doc = doQuery(urllib.unquote(m.group(1)), int(m.group(2)), int(m.group(3)))
        return doc
        
    def do_GET(self):
        url = urlparse.urlsplit(self.path)
        doc = self._getdoc(url[2], url[3])
        self._writeheaders(doc)
        self.wfile.write(doc)
                
class SearchServer(HTTPServer):
    allow_reuse_address = 1

if __name__ == '__main__':
    if len(sys.argv) != 2:
        print "Usage: python lucene_server.py index_dir"
    else:
        indexDir = sys.argv[1]
        fsDir = FSDirectory.getDirectory(indexDir, False)
        searcher = IndexSearcher(fsDir)
        
        serveraddr = ('', SERVER_PORT)
        srvr = SearchServer(serveraddr, SearchRequestHandler)
        print "Ready to serve search queries"
        srvr.serve_forever()
Exemple #4
0
  results = []

  for i, doc in hits:
    results.append([doc.get("name"), doc.get("owner").encode('gbk'), doc.get("title").encode('gbk')])
  
  # sort result
  results.sort(lambda x,y: cmp(x[0],y[0]))    
  for name,owner,title in results:
    print name, owner, title 

def test_fixture():
  global BOARDSPATH
  BOARDSPATH = './'

if __name__ == '__main__':
  #test_fixture()

  board = sys.argv[1]
  querystr = sys.argv[2].decode('gbk').strip()
  
  path = BOARDSPATH+board+'/'+RECENT_INDEX
  if not os.path.exists(path) or len(querystr) == 0:
    sys.exit(-1)
  directory = FSDirectory.getDirectory(path, False)
  searcher = IndexSearcher(directory)
  analyzer = StandardAnalyzer()
  run(searcher, analyzer, querystr)
  searcher.close()
    
Exemple #5
0
 def getIndexSearcher(self):
     #        if not IndexSupport.searchers.has_key(self.indexPath) or not IndexSupport.searchers[self.indexPath].getIndexReader().isCurrent():
     #            IndexSupport.searchers[self.indexPath] = IndexSearcher(self.getIndexReader())
     #        return IndexSupport.searchers[self.indexPath]
     return IndexSearcher(self.getIndexReader())