openviglet/turing
:sparkles: :dna: Turing ES - Enterprise Search, Semantic Navigation, Chatbot using Search Engine and Generative AI.
= 🔍 Viglet Turing ES
Viglet Team opensource@viglet.com
:organization: Viglet Turing
:viglet-version: 2025.3
:icons: font
:git-project: openviglet/turing
[.lead]
Enterprise Search Platform with Semantic Navigation, Chatbots, and Generative AI
[.badges]
image:https://img.shields.io/badge/Download-Release%20{viglet-version}-blue?style=for-the-badge&logo=OpenJDK[link="https://viglet.org/turing/download/"]
image:https://img.shields.io/github/license/{git-project}.svg?style=for-the-badge&logo=Apache["License"]
image:https://img.shields.io/github/last-commit/{git-project}.svg?style=for-the-badge&logo=java)[GitHub last commit]
image:https://img.shields.io/github/actions/workflow/status/openviglet/turing/validate.yml?branch={viglet-version}&style=for-the-badge&logo=GitHub[link="https://github.com/openviglet/turing/actions/workflows/validate.yml"]
image:https://img.shields.io/badge/Sonar-Code%20Quality-brightgreen?style=for-the-badge&logo=SonarCloud[link="https://sonarcloud.io/project/overview?id=viglet_turing"]
image:https://img.shields.io/badge/Javadoc-Release%20{viglet-version}-brightgreen?style=for-the-badge&logo=OpenJDK[link="https://turing.viglet.com/latest/javadoc/"]
== 🚀 What is Viglet Turing?
Viglet Turing (https://viglet.org/turing/) is a powerful enterprise search platform that revolutionizes how organizations discover, search, and interact with their content. By combining cutting-edge technologies like semantic navigation, intelligent chatbots, and generative artificial intelligence, Turing provides a comprehensive solution for modern enterprise search needs.
[.features-grid]
=== ⭐ Key Features
[cols="1,3", options="header"]
|===
| Feature | Description
| 🧠 Semantic Navigation | Advanced search with intelligent content understanding and contextual results
| 🤖 AI-Powered Chatbots | Interactive conversational search with natural language processing
| ✨ Generative AI Integration | Leverage modern AI models for enhanced search experiences
| 🔗 Enterprise Connectors | Seamless integration with CMS platforms, databases, and file systems
| 🌐 Multi-Source Indexing | Index content from websites, documents, databases, and more
| 📊 Real-time Analytics | Monitor search performance and user behavior
| 🔒 Enterprise Security | Built-in authentication and authorization capabilities
| 📱 Modern UI/UX | React-based responsive interface with customizable themes
|===
== 🏗️ Architecture & Components
Viglet Turing is built with a modern, scalable architecture supporting multiple deployment scenarios:
=== Core Components
- Turing App: Main Spring Boot application with REST APIs
- Turing UI: Modern React-based user interface
- Search Engine: Apache Solr integration with intelligent indexing
- Database Layer: Support for H2, MariaDB, and other databases
- Message Queue: Apache Artemis for asynchronous processing
=== Integration Ecosystem
==== 🔌 Content Sources
- CMS Connectors: Adobe Experience Manager (AEM), WordPress, and more
- Web Crawler: Automated website content indexing
- Database Connectors: MySQL, PostgreSQL, Oracle, SQL Server
- File System: Local and network file indexing
==== 🛠️ Developer Tools
- Java SDK: Full-featured client library for Java applications
- JavaScript SDK: TypeScript-ready SDK for web applications
- REST APIs: Comprehensive RESTful API for all operations
== 🚦 Quick Start
=== Prerequisites
- Java 21+ ☕
- Maven 3.6+ 📦
- Docker & Docker Compose (recommended) 🐳
=== Option 1: Docker Compose (Recommended)
[source,bash]
Clone the repository
git clone https://github.com/openviglet/turing.git
cd turing
Start all services with Docker Compose
docker-compose up -d
Access Turing at http://localhost:2700
=== Option 2: Local Development
[source,bash]
Clone and build
git clone https://github.com/openviglet/turing.git
cd turing
Build the project
./mvnw clean install
Run the application
./mvnw spring-boot:run -pl turing-app
Access Turing at http://localhost:2700
=== 🎯 First Steps After Installation
- Access the Console: Open http://localhost:2700/console
- Create a Site: Set up your first search site
- Index Content: Use connectors or APIs to add your content
- Start Searching: Experience semantic search with your data
== 💻 Code Examples
=== Java SDK Example
[source,java]
import com.viglet.turing.client.sn.HttpTurSNServer;
import com.viglet.turing.client.sn.TurSNQuery;
import com.viglet.turing.client.sn.response.QueryTurSNResponse;
// Connect to Turing server
HttpTurSNServer turSNServer = new HttpTurSNServer("http://localhost:2700/api/sn/MySite");
// Create search query
TurSNQuery query = new TurSNQuery();
query.setQuery("artificial intelligence");
query.setRows(10);
query.setPageNumber(1);
// Execute search
QueryTurSNResponse response = turSNServer.query(query);
response.getResults().getDocument().forEach(doc -> {
System.out.println("Title: " + doc.getFields().get("title"));
System.out.println("Content: " + doc.getFields().get("content"));
});
=== JavaScript SDK Example
[source,javascript]
import { TurSNSiteSearchService } from '@openviglet/turing-js-sdk';
// Initialize search service
const searchService = new TurSNSiteSearchService('http://localhost:2700');
// Perform search
const results = await searchService.search('sample-site', {
q: 'machine learning',
rows: 10,
currentPage: 1,
localeRequest: 'en_US',
});
console.log(Found ${results.queryContext?.count} results);
results.results?.document?.forEach(doc => {
console.log(Title: ${doc.fields?.title});
console.log(Description: ${doc.fields?.description});
});
=== REST API Example
[source,bash]
Search via REST API
curl -X GET "http://localhost:2700/api/sn/sample-site/search?q=artificial%20intelligence&rows=10&_setlocale=en_US"
=== GraphQL API Example
=== API Endpoints
- GraphQL API:
POST /graphql - GraphiQL Interface:
GET /graphiql
=== Example Usage
[source,graphql]
query {
siteSearch(
siteName: "sample-site"
searchParams: {
q: "technology"
rows: 10
p: 1
sort: "relevance"
}
locale: "en_US"
) {
queryContext {
count
responseTime
}
results {
numFound
document {
fields {
title
text
url
}
}
}
}
}
=== Integration Benefits
- Type Safety: Strong typing prevents runtime errors
- Flexible Queries: Clients can request exactly the data they need
- Single Endpoint: All search operations through one GraphQL endpoint
- Backward Compatibility: Existing REST API remains unchanged
- Interactive Development: GraphiQL interface for query development
- Consistent Results: Uses same search engine and processing as REST API
== 🛠️ Development Setup
=== Building from Source
[source,bash]
Clone repository
git clone https://github.com/openviglet/turing.git
cd turing
Build all modules
./mvnw clean install
Build specific components
./mvnw clean install -pl turing-app # Main application
./mvnw clean install -pl turing-java-sdk # Java SDK
cd turing-js-sdk/js-sdk-lib; npm run build # JavaScript SDK
=== Running Tests
[source,bash]
Run all tests
./mvnw test
Run specific module tests
./mvnw test -pl turing-app
=== Development Environment
[source,bash]
Start development stack
docker-compose -f docker-compose.dev.yml up -d
Run app in development mode
./mvnw spring-boot:run -pl turing-app -Dspring-boot.run.profiles=development
== 🤝 Community & Contributing
=== Getting Involved
We welcome contributions from developers of all skill levels! Here's how you can get started:
- 🐛 Report Issues: Found a bug? Create an issue on GitHub
- 💡 Feature Requests: Have an idea? We'd love to hear it
- 📖 Documentation: Help improve our docs and examples
- 🔧 Code Contributions: Submit pull requests for bug fixes and features
=== Contribution Guidelines
- Review our link:CONTRIBUTING.md[Contributing Guide]
- Follow our link:CODE_OF_CONDUCT.md[Code of Conduct]
- Check out issues labeled https://github.com/{git-project}/labels/good%20first%20issue["good first issue"] for beginners
=== Connect with Us
- 🌐 Website: https://viglet.org/turing/
- 🐛 Issues: https://github.com/{git-project}/issues
- 📋 Discussions: https://github.com/{git-project}/discussions
== 📚 Documentation & Resources
=== Essential Links
- 📖 Full Documentation: https://docs.viglet.com/turing/
- 💾 Downloads: https://viglet.org/turing/download/
- 🔧 API Documentation: https://turing.viglet.com/latest/javadoc/
=== SDK Documentation
- Java SDK: link:turing-java-sdk/README.md[Java SDK Guide]
- JavaScript SDK: link:turing-js-sdk/js-sdk-lib/README.md[JS SDK Guide]
== 🐳 Deployment Options
=== Docker Production Setup
[source,bash]
Production with external database
docker-compose -f docker-compose.yml up -d
Kubernetes deployment
kubectl apply -f k8s/
=== Traditional Deployment
[source,bash]
Build production JAR
./mvnw clean package -pl turing-app
Run with production profile
java -jar turing-app/target/viglet-turing.jar
== 🆘 Troubleshooting
=== Common Issues
Q: Search results are empty
A: Ensure your content is properly indexed and the search site is configured correctly.
Q: Docker containers won't start
A: Check that ports 2700, 8983, and 3306 are not in use by other applications.
Q: Build fails with Java version error
A: Ensure you're using Java 21 or higher. Check with java -version.
=== Getting Help
- 📋 Check our https://github.com/openviglet/turing/discussions[GitHub Discussions]
- 🐛 Report bugs via https://github.com/openviglet/turing/issues[GitHub Issues]
- 📧 Email us at opensource@viglet.com
== 📄 License
This project is licensed under the Apache License 2.0 - see the link:LICENSE[LICENSE] file for details.
== 🌟 Star History
If you find Viglet Turing useful, please consider giving us a star on GitHub! ⭐
[.text-center]
Built with ❤️ by the Viglet Team