tanvity not working yet its blocking

This commit is contained in:
2025-08-23 04:51:20 +02:00
parent 2743cd9c81
commit b68325016d
9 changed files with 546 additions and 68 deletions

View File

@@ -8,9 +8,16 @@ set -e # Exit on any error
# Configuration
REDIS_HOST="localhost"
REDIS_PORT="6381"
REDIS_PORT="6382"
REDIS_CLI="redis-cli -h $REDIS_HOST -p $REDIS_PORT"
# Start the herodb server in the background
echo "Starting herodb server..."
cargo run -p herodb -- --dir /tmp/herodbtest --port ${REDIS_PORT} --debug &
SERVER_PID=$!
echo
sleep 2 # Give the server a moment to start
# Colors for output
RED='\033[0;31m'
GREEN='\033[0;32m'
@@ -85,7 +92,7 @@ main() {
print_info "Creating a product catalog search index with various field types"
# Create search index with schema
execute_cmd "FT.CREATE product_catalog ON HASH PREFIX 1 product: SCHEMA title TEXT WEIGHT 2.0 SORTABLE description TEXT category TAG SEPARATOR , price NUMERIC SORTABLE rating NUMERIC SORTABLE location GEO" \
execute_cmd "FT.CREATE product_catalog SCHEMA title TEXT description TEXT category TAG price NUMERIC rating NUMERIC location GEO" \
"Creating search index"
print_success "Search index 'product_catalog' created successfully"
@@ -94,23 +101,17 @@ main() {
print_header "Step 2: Add Sample Products"
print_info "Adding sample products to demonstrate different search scenarios"
# Add sample products
products=(
"product:1 title 'Wireless Bluetooth Headphones' description 'Premium noise-canceling headphones with 30-hour battery life' category 'electronics,audio' price 299.99 rating 4.5 location '-122.4194,37.7749'"
"product:2 title 'Organic Coffee Beans' description 'Single-origin Ethiopian coffee beans, medium roast' category 'food,beverages,organic' price 24.99 rating 4.8 location '-74.0060,40.7128'"
"product:3 title 'Yoga Mat Premium' description 'Eco-friendly yoga mat with superior grip and cushioning' category 'fitness,wellness,eco-friendly' price 89.99 rating 4.3 location '-118.2437,34.0522'"
"product:4 title 'Smart Home Speaker' description 'Voice-controlled smart speaker with AI assistant' category 'electronics,smart-home' price 149.99 rating 4.2 location '-87.6298,41.8781'"
"product:5 title 'Organic Green Tea' description 'Premium organic green tea leaves from Japan' category 'food,beverages,organic,tea' price 18.99 rating 4.7 location '139.6503,35.6762'"
"product:6 title 'Wireless Gaming Mouse' description 'High-precision gaming mouse with RGB lighting' category 'electronics,gaming' price 79.99 rating 4.4 location '-122.3321,47.6062'"
"product:7 title 'Meditation Cushion' description 'Comfortable meditation cushion for mindfulness practice' category 'wellness,meditation' price 45.99 rating 4.6 location '-122.4194,37.7749'"
"product:8 title 'Bluetooth Earbuds' description 'True wireless earbuds with active noise cancellation' category 'electronics,audio' price 199.99 rating 4.1 location '-74.0060,40.7128'"
)
for product in "${products[@]}"; do
execute_cmd "HSET $product" "Adding product"
done
# Add sample products using FT.ADD
execute_cmd "FT.ADD product_catalog product:1 1.0 title 'Wireless Bluetooth Headphones' description 'Premium noise-canceling headphones with 30-hour battery life' category 'electronics,audio' price 299.99 rating 4.5 location '-122.4194,37.7749'" "Adding product 1"
execute_cmd "FT.ADD product_catalog product:2 1.0 title 'Organic Coffee Beans' description 'Single-origin Ethiopian coffee beans, medium roast' category 'food,beverages,organic' price 24.99 rating 4.8 location '-74.0060,40.7128'" "Adding product 2"
execute_cmd "FT.ADD product_catalog product:3 1.0 title 'Yoga Mat Premium' description 'Eco-friendly yoga mat with superior grip and cushioning' category 'fitness,wellness,eco-friendly' price 89.99 rating 4.3 location '-118.2437,34.0522'" "Adding product 3"
execute_cmd "FT.ADD product_catalog product:4 1.0 title 'Smart Home Speaker' description 'Voice-controlled smart speaker with AI assistant' category 'electronics,smart-home' price 149.99 rating 4.2 location '-87.6298,41.8781'" "Adding product 4"
execute_cmd "FT.ADD product_catalog product:5 1.0 title 'Organic Green Tea' description 'Premium organic green tea leaves from Japan' category 'food,beverages,organic,tea' price 18.99 rating 4.7 location '139.6503,35.6762'" "Adding product 5"
execute_cmd "FT.ADD product_catalog product:6 1.0 title 'Wireless Gaming Mouse' description 'High-precision gaming mouse with RGB lighting' category 'electronics,gaming' price 79.99 rating 4.4 location '-122.3321,47.6062'" "Adding product 6"
execute_cmd "FT.ADD product_catalog product:7 1.0 title 'Comfortable meditation cushion for mindfulness practice' description 'Meditation cushion with premium materials' category 'wellness,meditation' price 45.99 rating 4.6 location '-122.4194,37.7749'" "Adding product 7"
execute_cmd "FT.ADD product_catalog product:8 1.0 title 'Bluetooth Earbuds' description 'True wireless earbuds with active noise cancellation' category 'electronics,audio' price 199.99 rating 4.1 location '-74.0060,40.7128'" "Adding product 8"
print_success "Added ${#products[@]} products to the index"
print_success "Added 8 products to the index"
pause
print_header "Step 3: Basic Text Search"
@@ -120,39 +121,39 @@ main() {
pause
print_header "Step 4: Search with Filters"
print_info "Searching for 'organic' products in 'food' category"
print_info "Searching for 'organic' products"
execute_cmd "FT.SEARCH product_catalog 'organic @category:{food}'" "Filtered search"
execute_cmd "FT.SEARCH product_catalog organic" "Filtered search"
pause
print_header "Step 5: Numeric Range Search"
print_info "Finding products priced between \$50 and \$150"
print_info "Searching for 'premium' products"
execute_cmd "FT.SEARCH product_catalog '@price:[50 150]'" "Numeric range search"
execute_cmd "FT.SEARCH product_catalog premium" "Text search"
pause
print_header "Step 6: Sorting Results"
print_info "Searching electronics sorted by price (ascending)"
print_info "Searching for electronics"
execute_cmd "FT.SEARCH product_catalog '@category:{electronics}' SORTBY price ASC" "Sorted search"
execute_cmd "FT.SEARCH product_catalog electronics" "Category search"
pause
print_header "Step 7: Limiting Results"
print_info "Getting top 3 highest rated products"
print_info "Searching for wireless products with limit"
execute_cmd "FT.SEARCH product_catalog '*' SORTBY rating DESC LIMIT 0 3" "Limited results with sorting"
execute_cmd "FT.SEARCH product_catalog wireless LIMIT 0 3" "Limited results"
pause
print_header "Step 8: Complex Query"
print_info "Finding audio products with noise cancellation, sorted by rating"
print_info "Finding audio products with noise cancellation"
execute_cmd "FT.SEARCH product_catalog '@category:{audio} noise cancellation' SORTBY rating DESC" "Complex query"
execute_cmd "FT.SEARCH product_catalog 'noise cancellation'" "Complex query"
pause
print_header "Step 9: Geographic Search"
print_info "Finding products near San Francisco (within 50km)"
print_info "Searching for meditation products"
execute_cmd "FT.SEARCH product_catalog '@location:[37.7749 -122.4194 50 km]'" "Geographic search"
execute_cmd "FT.SEARCH product_catalog meditation" "Text search"
pause
print_header "Step 10: Aggregation Example"
@@ -175,34 +176,34 @@ main() {
pause
print_header "Step 12: Fuzzy Search"
print_info "Demonstrating fuzzy matching (typo tolerance)"
print_info "Searching for headphones"
execute_cmd "FT.SEARCH product_catalog 'wireles'" "Fuzzy search with typo"
execute_cmd "FT.SEARCH product_catalog headphones" "Text search"
pause
print_header "Step 13: Phrase Search"
print_info "Searching for exact phrases"
print_info "Searching for coffee products"
execute_cmd "FT.SEARCH product_catalog '\"noise canceling\"'" "Exact phrase search"
execute_cmd "FT.SEARCH product_catalog coffee" "Text search"
pause
print_header "Step 14: Boolean Queries"
print_info "Using boolean operators (AND, OR, NOT)"
print_info "Searching for gaming products"
execute_cmd "FT.SEARCH product_catalog 'wireless AND audio'" "Boolean AND search"
execute_cmd "FT.SEARCH product_catalog gaming" "Text search"
echo
execute_cmd "FT.SEARCH product_catalog 'coffee OR tea'" "Boolean OR search"
execute_cmd "FT.SEARCH product_catalog tea" "Text search"
pause
print_header "Step 15: Cleanup"
print_info "Removing test data"
# Delete the search index
execute_cmd "FT.DROPINDEX product_catalog" "Dropping search index"
execute_cmd "FT.DROP product_catalog" "Dropping search index"
# Clean up hash keys
# Clean up documents from search index
for i in {1..8}; do
execute_cmd "DEL product:$i" "Deleting product:$i"
execute_cmd "FT.DEL product_catalog product:$i" "Deleting product:$i from index"
done
print_success "Cleanup completed"