All Projects → coady → lupyne

coady / lupyne

Licence: other
Pythonic search engine based on PyLucene.

Programming Languages

python
139335 projects - #7 most used programming language
Makefile
30231 projects

Projects that are alternatives of or similar to lupyne

Fess
Fess is very powerful and easily deployable Enterprise Search Server.
Stars: ✭ 561 (+819.67%)
Mutual labels:  search-engine, lucene
Ik Analyzer
支持Lucene5/6/7/8+版本, 长期维护。
Stars: ✭ 112 (+83.61%)
Mutual labels:  search-engine, lucene
Lucene Solr
Apache Lucene and Solr open-source search software
Stars: ✭ 4,217 (+6813.11%)
Mutual labels:  search-engine, lucene
Opensearchserver
Open-source Enterprise Grade Search Engine Software
Stars: ✭ 408 (+568.85%)
Mutual labels:  search-engine, lucene
solr
Apache Solr open-source search software
Stars: ✭ 651 (+967.21%)
Mutual labels:  search-engine, lucene
Querqy
Query preprocessor for Java-based search engines (Querqy Core and Solr implementation)
Stars: ✭ 122 (+100%)
Mutual labels:  search-engine, lucene
Vectorsinsearch
Dice.com repo to accompany the dice.com 'Vectors in Search' talk by Simon Hughes, from the Activate 2018 search conference, and the 'Searching with Vectors' talk from Haystack 2019 (US). Builds upon my conceptual search and semantic search work from 2015
Stars: ✭ 71 (+16.39%)
Mutual labels:  search-engine, lucene
lucene
Apache Lucene open-source search software
Stars: ✭ 1,009 (+1554.1%)
Mutual labels:  search-engine, lucene
FastAPI-template
Feature rich robust FastAPI template.
Stars: ✭ 660 (+981.97%)
Mutual labels:  fastapi, strawberry-graphql
Examine
A .NET indexing and search engine powered by Lucene.Net
Stars: ✭ 208 (+240.98%)
Mutual labels:  search-engine, lucene
querqy-elasticsearch
Querqy for Elasticsearch
Stars: ✭ 37 (-39.34%)
Mutual labels:  search-engine, lucene
Verdant Search
用python+fastapi实现的搜索引擎
Stars: ✭ 13 (-78.69%)
Mutual labels:  search-engine, fastapi
fastapi-pydiator
Python clean architecture and usecase implementation with fastapi and pydiator-core
Stars: ✭ 58 (-4.92%)
Mutual labels:  fastapi
hohser
Highlight or Hide Search Engine Results
Stars: ✭ 89 (+45.9%)
Mutual labels:  search-engine
domhttpx
domhttpx is a google search engine dorker with HTTP toolkit built with python, can make it easier for you to find many URLs/IPs at once with fast time.
Stars: ✭ 59 (-3.28%)
Mutual labels:  search-engine
Intelligent Document Finder
Document Search Engine Tool
Stars: ✭ 45 (-26.23%)
Mutual labels:  search-engine
code-compass
a contextual search engine for software packages built on import2vec embeddings (https://www.code-compass.com)
Stars: ✭ 33 (-45.9%)
Mutual labels:  search-engine
ZeroToHeroDaprCon
Demos from my Zero to Hero with Dapr session @ DaprCon
Stars: ✭ 36 (-40.98%)
Mutual labels:  fastapi
nlp-lt
Natural Language Processing for Lithuanian language
Stars: ✭ 17 (-72.13%)
Mutual labels:  search-engine
explicit-semantic-analysis
Wikipedia-based Explicit Semantic Analysis, as described by Gabrilovich and Markovitch
Stars: ✭ 34 (-44.26%)
Mutual labels:  lucene

image image image image image image image image image

Lupyne is a search engine based on PyLucene, the Python extension for accessing Java Lucene. Lucene is a relatively low-level toolkit, and PyLucene wraps it through automatic code generation. So although Java idioms are translated to Python idioms where possible, the resulting interface is far from Pythonic. See ./docs/examples.ipynb for comparisons with the Lucene API.

Lupyne also provides GraphQL and RESTful search services, based on Starlette. Note Solr and Elasticsearch are popular options for Lucene-based search, if no further (Python) customization is needed. So while the services are suitable for production usage, their primary motivation is to be an extensible example.

Not having to initially choose between an embedded library and a server not only provides greater flexibility, it can provide better performance, e.g., batch indexing offline and remote searching live. Additionally only lightweight wrappers with extended behavior are used wherever possible, so falling back to using PyLucene directly is always an option, but should never be necessary for performance.

Usage

PyLucene requires initializing the VM.

import lucene

lucene.initVM()

Indexes are accessed through an IndexSearcher (read-only), IndexWriter, or the combined Indexer.

from lupyne import engine

searcher = engine.IndexSearcher('index/path')
hits = searcher.search('text:query')

See ./lupyne/services/README.md for services usage.

Installation

% pip install lupyne[graphql,rest]

PyLucene is not pip installable.

Dependencies

  • PyLucene >=8.6
  • strawberry-graphql >=0.84.4 (if graphql option)
  • fastapi (if rest option)

Tests

100% branch coverage.

% pytest [--cov]

Changes

dev

  • PyLucene >=8.6 required
  • PyLucene 8.11 supported
  • CherryPy server removed

2.5

  • Python >=3.7 required
  • PyLucene 8.6 supported
  • CherryPy server deprecated

2.4

  • PyLucene >=8 required
  • Hit.keys renamed to Hit.sortkeys

2.3

  • PyLucene >=7.7 required
  • PyLucene 8 supported

2.2

  • PyLucene 7.6 supported

2.1

  • PyLucene >=7 required

2.0

  • PyLucene >=6 required
  • Python 3 support
  • client moved to external package

1.9

  • Python 2.6 dropped
  • PyLucene 4.8 and 4.9 dropped
  • IndexWriter implements context manager
  • Server DocValues updated via patch method
  • Spatial tile search optimized

1.8

  • PyLucene 4.10 supported
  • PyLucene 4.6 and 4.7 dropped
  • Comparator iteration optimized
  • Support for string based FieldCacheRangeFilters
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].