Git Product home page Git Product logo

querqy-opensearch's Introduction

Build Querqy Docker Integration Tests for Querqy Querqy for Solr Querqy Core

โš ๏ธ IMPORTANT: Querqy 5.5 for Solr introduces some breaking changes that will affect you if you are upgrading from an older version and if

  • you are using Info Logging, or
  • rely on the debug output format, or
  • you are using a custom rewriter implementation

See here for the release notes: https://querqy.org/docs/querqy/release-notes.html#major-changes-in-querqy-for-solr-5-5-1

Querqy

Querqy is a framework for query preprocessing in Java-based search engines.

This is the repository for querqy-core, querqy-lucene and querqy-solr. Repositories for further Querqy integrations can be found at:

Documentation and 'Getting started'

Visit docs.querqy.org/querqy/ for detailed documentation.

Please make sure you read the release notes!

Check out Querqy.org for related projects that help you speed up search software development.

Developer channel: Join #querqy on the Relevance & Matching Tech Slack space

License

Querqy is licensed under the Apache License, Version 2.

Contributing

Please read our developer guidelines before contributing.

querqy-opensearch's People

Contributors

epugh avatar johannesdaniel avatar mkr avatar ps48 avatar renekrie avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

querqy-opensearch's Issues

CI workflows

Issue:
Create CI workflows for test automation. This should include building the plugin and running unit/integration tests.
More on Plugin standards here

[RELEASE] Release version querqy-opensearch-1.0.os2.3.0

Release Steps

Preparation

  • Assign this issue to a release owner(s)
  • Finalize feature freeze date (Sept 16th 2022)
  • Finalize release date (Sept 19th 2022)
  • Merge all relevant dependabot PRs

CI/CD & Testing

  • Make sure CI/CD passes over the branch being released (default: main)
  • Sanity Testing: install the plugin and test functionalities

Code complete

  • Make sure new features/bug fixes are complete and added
  • Add release notes with the latest release number
  • Verify all issues labelled 2.3.0 features are part of the release

Release

  • Cut branch 2.3 from main after all related PRs are merged.
  • Create a tag with pre-built package and code assets for the release
  • Upload the package to maven (@JohannesDaniel)

Post-Release

  • Add a retrospective issue to the repo with the release tag
  • Update this release template with improvements, if any

Update README.md

The current readme file is outdated. It doesn't give users ability to directly install and run querqy on their OpenSearch Clusters. Below are the steps to update readme:

  1. Add steps to build the code and install the plugin to OpenSearch.
  2. Add sample API calls to see if the plugin works as expected for the user.

Unable to Install Plugin in OpenSearch 2.12

I am encountering difficulties installing a plugin in OpenSearch version 2.12. Despite following the documented installation procedures, the plugin installation process fails consistently. This issue is hindering our ability to utilize crucial functionalities within our OpenSearch environment.
It will be really appreciated.

Update license header

Issue:

The current license header needs to be changed from ASF License to:

/*
 * SPDX-License-Identifier: Apache-2.0
 *
 * Querqy for OpenSearch Contributors require contributions made to
 * this file be licensed under the Apache-2.0 license or a
 * compatible open source license.
 *
 * Copyright Querqy for OpenSearch Contributors. See
 * GitHub history for details.
 */

Also, need to update the same in contributing.md document.

Correct licence header

The project is not "Licensed to the Apache Software Foundation (ASF)" -> therefore the header must be changed

Bump version to 2.4.0

Issue:
OpenSearch released 2.4.0 on 09/15. Let's bump up the version for Querqy plugin to match the OpenSearch versioning.

[New Feature] Compatibility with OpenSearch version 2.3.0

Create a Querqy plugin version for OpenSearch v2.3.0

[BUG] WordBreakCompoundRewriter is not working as expected

When using the word break rewriter in a query, the following exception is thrown:

[querqy-example/t3iVrtE-TXC5S2dfxjWV9Q] QueryShardException[failed to create query: this IndexReader is closed]; nested: AlreadyClosedException[this IndexReader is closed];
	at org.opensearch.index.query.QueryShardContext.toQuery(QueryShardContext.java:402)
	at org.opensearch.index.query.QueryShardContext.toQuery(QueryShardContext.java:385)
	at org.opensearch.search.SearchService.parseSource(SearchService.java:902)
	at org.opensearch.search.SearchService.createContext(SearchService.java:739)
	at org.opensearch.search.SearchService.executeQueryPhase(SearchService.java:441)
	at org.opensearch.search.SearchService.access$500(SearchService.java:154)
	at org.opensearch.search.SearchService$2.lambda$onResponse$0(SearchService.java:414)
	at org.opensearch.action.ActionRunnable.lambda$supply$0(ActionRunnable.java:71)
	at org.opensearch.action.ActionRunnable$2.doRun(ActionRunnable.java:86)
	at org.opensearch.common.util.concurrent.AbstractRunnable.run(AbstractRunnable.java:50)
	at org.opensearch.common.util.concurrent.TimedRunnable.doRun(TimedRunnable.java:57)
	at org.opensearch.common.util.concurrent.ThreadContext$ContextPreservingAbstractRunnable.doRun(ThreadContext.java:756)
	at org.opensearch.common.util.concurrent.AbstractRunnable.run(AbstractRunnable.java:50)
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130)
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:630)
	at java.base/java.lang.Thread.run(Thread.java:832)
Caused by: org.apache.lucene.store.AlreadyClosedException: this IndexReader is closed
	at org.apache.lucene.index.IndexReader.ensureOpen(IndexReader.java:257)
	at org.apache.lucene.index.CompositeReader.getContext(CompositeReader.java:99)
	at org.apache.lucene.index.CompositeReader.getContext(CompositeReader.java:53)
	at org.apache.lucene.search.IndexSearcher.<init>(IndexSearcher.java:183)
	at org.apache.lucene.search.IndexSearcher.<init>(IndexSearcher.java:170)
	at querqy.lucene.contrib.rewrite.wordbreak.Collector.<init>(Collector.java:142)
	at querqy.lucene.contrib.rewrite.wordbreak.MorphologicalWordBreaker.breakWord(MorphologicalWordBreaker.java:61)
	at querqy.lucene.contrib.rewrite.wordbreak.WordBreakCompoundRewriter.decompound(WordBreakCompoundRewriter.java:177)
	at querqy.lucene.contrib.rewrite.wordbreak.WordBreakCompoundRewriter.visit(WordBreakCompoundRewriter.java:161)
	at querqy.lucene.contrib.rewrite.wordbreak.WordBreakCompoundRewriter.visit(WordBreakCompoundRewriter.java:27)
	at querqy.model.Term.accept(Term.java:59)
	at querqy.lucene.contrib.rewrite.wordbreak.WordBreakCompoundRewriter.visit(WordBreakCompoundRewriter.java:145)
	at querqy.lucene.contrib.rewrite.wordbreak.WordBreakCompoundRewriter.visit(WordBreakCompoundRewriter.java:27)
	at querqy.model.DisjunctionMaxQuery.accept(DisjunctionMaxQuery.java:25)
	at querqy.model.AbstractNodeVisitor.visit(AbstractNodeVisitor.java:15)
	at querqy.lucene.contrib.rewrite.wordbreak.WordBreakCompoundRewriter.rewrite(WordBreakCompoundRewriter.java:91)
	at querqy.rewrite.RewriteChain.rewrite(RewriteChain.java:66)
	at querqy.lucene.QueryParsingController.process(QueryParsingController.java:197)
	at querqy.opensearch.QuerqyProcessor.parseQuery(QuerqyProcessor.java:76)
	at querqy.opensearch.query.QuerqyQueryBuilder.doToQuery(QuerqyQueryBuilder.java:205)
	at org.opensearch.index.query.AbstractQueryBuilder.toQuery(AbstractQueryBuilder.java:116)
	at org.opensearch.index.query.QueryShardContext.lambda$toQuery$3(QueryShardContext.java:386)
	at org.opensearch.index.query.QueryShardContext.toQuery(QueryShardContext.java:398)
	... 15 more

The word break rewriter uses the index as dictionary during the rewriting. querqy.opensearch.rewriter.WordBreakCompoundRewriterFactory#createRewriterFactory passes an IndexShard reference to the rewriter when loading it. This reference is used later to get an IndexReader reference, which is used to apply the index lookups.

Plugin installation fails for OpenSearch 1.3

Issue:
The Plugin installation fails using the OpenSearch Plugin CLI Tool

bin/opensearch-plugin install file:///usr/share/opensearch/querqy-opensearch.zip

Exception in thread "main" java.nio.file.NoSuchFileException: /usr/share/opensearch/plugins/.installing-12975521533611387320/plugin-descriptor.properties

Tests are not executed

Tests are generally skipped right now. When tests are run in Intellij (with Gradle in the background), no tests are executed with the message "Test events were not eceived".

When running tests with gradle directly, e. g. with ./gradlew :test --tests "querqy.opensearch.query.GeneratedTest", the build is done successfully, but no tests are executed and no test result reports are written.

Builds can be done without any problems (but tests are not executed).

Retrospective issue for version querqy-opensearch-1.0.os2.3.0

Retrospective Issue

Initial suggestions

  1. Update release step to cut a branch from main for the specific plugin version (in this release 2.3) [UPDATED]
  2. Add a step to update the querqy-docs repository for plugin user related release notes
  3. Add support for automated maven release

Related release steps #40

Keeping this issue thread active till end of next week for release retrospection.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.