Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Match requests optimisation in case of zero docs for a keyword #1641

Closed
starinacool opened this issue Nov 29, 2023 · 12 comments
Closed

Match requests optimisation in case of zero docs for a keyword #1641

starinacool opened this issue Nov 29, 2023 · 12 comments
Assignees
Labels
bug rel::6.3.0 Released in 6.3.0

Comments

@starinacool
Copy link

Here is the request:

SELECT id 

FROM listing 

WHERE match('@n 25 рублей 2023 S2222')  

ORDER BY s_featured DESC, end_date ASC 

LIMIT 0,20 

OPTION ranker=none, cutoff=25000000, max_predicted_time=1000, max_matches=20;

SHOW META;
------------------------------

Empty set (0.014 sec)

+---------------------+---------------+
| Variable_name       | Value         |
+---------------------+---------------+
| total               | 0             |
| total_found         | 0             |
| total_relation      | eq            |
| time                | 0.014         |
| local_fetched_docs  | 402741        |
| local_fetched_hits  | 0             |
| local_fetched_skips | 16414         |
| predicted_time      | 59            |
| keyword[0]          | 2023          |
| docs[0]             | 121134        |
| hits[0]             | 133886        |
| keyword[1]          | 25            |
| docs[1]             | 305030        |
| hits[1]             | 315117        |
| keyword[2]          | =рублей       |
| docs[2]             | 406791        |
| hits[2]             | 537899        |
| keyword[3]          | s2222         |
| docs[3]             | 0             |
| hits[3]             | 0             |
| keyword[4]          | рубль         |
| docs[4]             | 753863        |
| hits[4]             | 1002685       |
+---------------------+---------------+
23 rows in set (0.000 sec)

It returns zero rows since keyword "s2222" has zero docs. But still fetches 402741 docs while it is obvious that where will be zero results after just looking at the number of docs for "S2222".

It would be nice for the optimiser to recognise these kind of situations.

@starinacool
Copy link
Author

starinacool commented Nov 29, 2023

If I remove "рублей" from the request the meta becomes like this:

+---------------------+--------+
| Variable_name       | Value  |
+---------------------+--------+
| total               | 0      |
| total_found         | 0      |
| total_relation      | eq     |
| time                | 0.000  |
| local_fetched_docs  | 0      |
| local_fetched_hits  | 0      |
| local_fetched_skips | 0      |
| predicted_time      | 0      |
| keyword[0]          | 2023   |
| docs[0]             | 120953 |
| hits[0]             | 133306 |
| keyword[1]          | 25     |
| docs[1]             | 304239 |
| hits[1]             | 314230 |
| keyword[2]          | s2222  |
| docs[2]             | 0      |
| hits[2]             | 0      |
+---------------------+--------+

Optimiser does not fetch any documents as expected.

@starinacool
Copy link
Author

starinacool commented Nov 29, 2023

If I replace "рублей" with "=рублей" the meta becomes like this:

+---------------------+---------------+
| Variable_name       | Value         |
+---------------------+---------------+
| total               | 0             |
| total_found         | 0             |
| total_relation      | eq            |
| time                | 0.000         |
| local_fetched_docs  | 0             |
| local_fetched_hits  | 0             |
| local_fetched_skips | 0             |
| predicted_time      | 0             |
| keyword[0]          | 2023          |
| docs[0]             | 120953        |
| hits[0]             | 133306        |
| keyword[1]          | 25            |
| docs[1]             | 304245        |
| hits[1]             | 314236        |
| keyword[2]          | =рублей       |
| docs[2]             | 405767        |
| hits[2]             | 536373        |
| keyword[3]          | s2222         |
| docs[3]             | 0             |
| hits[3]             | 0             |
+---------------------+---------------+

If I remove "рублей" from the request the meta becomes like this:

+---------------------+--------+
| Variable_name       | Value  |
+---------------------+--------+
| total               | 0      |
| total_found         | 0      |
| total_relation      | eq     |
| time                | 0.000  |
| local_fetched_docs  | 0      |
| local_fetched_hits  | 0      |
| local_fetched_skips | 0      |
| predicted_time      | 0      |
| keyword[0]          | 2023   |
| docs[0]             | 120953 |
| hits[0]             | 133306 |
| keyword[1]          | 25     |
| docs[1]             | 304239 |
| hits[1]             | 314230 |
| keyword[2]          | s2222  |
| docs[2]             | 0      |
| hits[2]             | 0      |
+---------------------+--------+

Optimiser also does not fetch any documents as expected.

It looks like if there is an forced "OR" operator than optimiser does not kick in.

@starinacool
Copy link
Author

Index is created with index_exact_words='1' option

@starinacool
Copy link
Author

Wow!
I changed the order of words to match('@ S2222 25 рублей 2023') putting zero documents word first and result is like this:

+---------------------+---------------+
| Variable_name       | Value         |
+---------------------+---------------+
| total               | 0             |
| total_found         | 0             |
| total_relation      | eq            |
| time                | 0.000         |
| local_fetched_docs  | 0             |
| local_fetched_hits  | 0             |
| local_fetched_skips | 0             |
| predicted_time      | 0             |
| keyword[0]          | 2023          |
| docs[0]             | 120969        |
| hits[0]             | 133365        |
| keyword[1]          | 25            |
| docs[1]             | 303757        |
| hits[1]             | 313794        |
| keyword[2]          | =рублей       |
| docs[2]             | 405115        |
| hits[2]             | 535584        |
| keyword[3]          | s2222         |
| docs[3]             | 0             |
| hits[3]             | 0             |
| keyword[4]          | рубль         |
| docs[4]             | 750019        |
| hits[4]             | 997718        |
+---------------------+---------------+

@sanikolaev
Copy link
Collaborator

Can you try this query?

SELECT id 

FROM listing 

WHERE match('25 рублей 2023 S2222')  

ORDER BY s_featured DESC, end_date ASC 

LIMIT 0,20 

OPTION ranker=none, cutoff=25000000, max_predicted_time=1000, max_matches=20;

SHOW META;

@sanikolaev sanikolaev added the waiting Waiting for the original poster (in most cases) or something else label Nov 30, 2023
@starinacool
Copy link
Author

starinacool commented Nov 30, 2023

MySQL [(none)]> show meta;
+---------------------+---------------+
| Variable_name       | Value         |
+---------------------+---------------+
| total               | 0             |
| total_found         | 0             |
| total_relation      | eq            |
| time                | 0.007         |
| local_fetched_docs  | 457228        |
| local_fetched_hits  | 0             |
| local_fetched_skips | 19051         |
| predicted_time      | 68            |
| keyword[0]          | 2023          |
| docs[0]             | 121119        |
| hits[0]             | 133439        |
| keyword[1]          | 25            |
| docs[1]             | 304577        |
| hits[1]             | 314566        |
| keyword[2]          | =рублей       |
| docs[2]             | 406826        |
| hits[2]             | 537802        |
| keyword[3]          | s2222         |
| docs[3]             | 0             |
| hits[3]             | 0             |
| keyword[4]          | рубль         |
| docs[4]             | 752050        |
| hits[4]             | 1000546       |
+---------------------+---------------+

@sanikolaev
Copy link
Collaborator

Please run:

show create table listing;
show table listing status;

@starinacool
Copy link
Author

starinacool commented Dec 1, 2023

 CREATE TABLE listing (
id bigint,
n text,
params text,
uts text,
desc text,
curency integer,
`type` integer,
num_of_bids integer,
d_abrod integer,
cty integer,
cntry integer,
d_local integer,
salesman integer,
type1 integer,
type2 integer,
type3 integer,
type4 integer,
b_quant integer,
price_sort integer,
pv integer,
num_of_pic integer,
end_date timestamp,
beg_date timestamp,
pic bool,
sale_type bool,
s_bold bool,
no_world bool,
s_featured bool,
is_reposted bool,
charity bool,
has_auction bool,
has_fixed bool,
bonus bool,
deliverysave bool,
best_offer bool,
`bit` bool,
cur_price float,
strike_price float,
d_local_p float,
d_country_p float,
d_world_p float,
pic_p float,
name string attribute,
name_sort string attribute,
no_g_region multi,
no_country multi,
no_region multi,
no_city multi,
types multi,
ut multi,
ut2 multi,
tags multi,
one_start bool,
condition bit(2)
) index_exact_words='1' html_strip='1' html_remove_elements='style, script' index_field_lengths='1' stopword_step='0' blend_chars='+, &, U+23, -, /, U+5C, "' blend_mode='trim_none, trim_head, trim_tail, skip_pure' morphology='lemmatize_ru_all, stem_en' min_stemming_len='2' stopwords_unstemmed='1' stopwords='/var/li
b/manticore/listing2/stopwords.txt' wordforms='/var/lib/manticore/listing2/syn_numbers2.txt /var/lib/manticore/listing2/syn_numbers.txt /var/lib/manticore/listing2/syns.txt' rt_mem_limit='209715200' 

+-----------------------------+-----------------------------------------------------------------------------------------------------------------+
| Variable_name               | Value                                                                                                           |
+-----------------------------+-----------------------------------------------------------------------------------------------------------------+
| index_type                  | rt                                                                                                              |
| indexed_documents           | 25084180                                                                                                        |
| indexed_bytes               | 14125091078                                                                                                     |
| field_tokens_n              | 606023157946                                                                                                    |
| field_tokens_params         | 1503239730438                                                                                                   |
| field_tokens_uts            | 0                                                                                                               |
| field_tokens_desc           | 209810619438                                                                                                    |
| total_tokens                | 2319073507822                                                                                                   |
| ram_bytes                   | 17367152698                                                                                                     |
| disk_bytes                  | 24757229113                                                                                                     |
| disk_mapped                 | 17664578079                                                                                                     |
| disk_mapped_cached          | 17200803840                                                                                                     |
| disk_mapped_doclists        | 8053881642                                                                                                      |
| disk_mapped_cached_doclists | 7591796736                                                                                                      |
| disk_mapped_hitlists        | 347499398                                                                                                       |
| disk_mapped_cached_hitlists | 345739264                                                                                                       |
| killed_documents            | 165807                                                                                                          |
| killed_rate                 | 0.65%                                                                                                           |
| ram_chunk                   | 166328818                                                                                                       |
| ram_chunk_segments_count    | 23                                                                                                              |
| disk_chunks                 | 8                                                                                                               |
| mem_limit                   | 209715200                                                                                                       |
| mem_limit_rate              | 95.00%                                                                                                          |
| ram_bytes_retired           | 0                                                                                                               |
| tid                         | 77948                                                                                                           |
| tid_saved                   | 77314                                                                                                           |
| query_time_1min             | {"queries":54790, "avg_sec":0.001, "min_sec":0.000, "max_sec":-0.002, "pct95_sec":0.002, "pct99_sec":0.003}     |
| query_time_5min             | {"queries":259826, "avg_sec":0.001, "min_sec":0.000, "max_sec":-0.002, "pct95_sec":0.002, "pct99_sec":0.004}    |
| query_time_15min            | {"queries":749595, "avg_sec":0.001, "min_sec":0.000, "max_sec":-0.002, "pct95_sec":0.002, "pct99_sec":0.004}    |
| query_time_total            | {"queries":154139426, "avg_sec":0.000, "min_sec":0.000, "max_sec":-0.001, "pct95_sec":0.006, "pct99_sec":0.016} |
| found_rows_1min             | {"queries":54790, "avg":243, "min":0, "max":232156, "pct95":1403, "pct99":3081}                                 |
| found_rows_5min             | {"queries":259826, "avg":346, "min":0, "max":2063033, "pct95":1569, "pct99":3341}                               |
| found_rows_15min            | {"queries":749595, "avg":312, "min":0, "max":2063033, "pct95":1512, "pct99":3299}                               |
| found_rows_total            | {"queries":154139426, "avg":1395, "min":0, "max":70783989, "pct95":154, "pct99":3256}                           |
+-----------------------------+-----------------------------------------------------------------------------------------------------------------+

@sanikolaev
Copy link
Collaborator

I can't reproduce it on a dummy table created with this script:

snikolaev@dev2:~$ cat load_fulltext_only.php
#!/usr/bin/php
<?php
if (count($argv) < 5) die("Usage: ".__FILE__." <batch size> <concurrency> <docs> <multiplier>\n");

require_once 'vendor/autoload.php';

// This function waits for an idle mysql connection for the $query, runs it and exits
function process($query) {
    global $all_links;
    global $requests;
    foreach ($all_links as $k=>$link) {
        if (@$requests[$k]) continue;
        mysqli_query($link, $query, MYSQLI_ASYNC);
        @$requests[$k] = microtime(true);
        return true;
    }
    do {
        $links = $errors = $reject = array();
        foreach ($all_links as $link) {
            $links[] = $errors[] = $reject[] = $link;
        }
        $count = @mysqli_poll($links, $errors, $reject, 0, 1000);
        if ($count > 0) {
            foreach ($links as $j=>$link) {
                $res = @mysqli_reap_async_query($links[$j]);
                foreach ($all_links as $i=>$link_orig) if ($all_links[$i] === $links[$j]) break;
                if ($link->error) {
                    echo "ERROR: {$link->error}\n";
                    if (!mysqli_ping($link)) {
                        echo "ERROR: mysql connection is down, removing it from the pool\n";
                        unset($all_links[$i]); // remove the original link from the pool
                        unset($requests[$i]); // and from the $requests too
                    }
                    return false;
                }
                if ($res === false and !$link->error) continue;
                if (is_object($res)) {
                    mysqli_free_result($res);
                }
                $requests[$i] = microtime(true);
                    mysqli_query($link, $query, MYSQLI_ASYNC); // making next query
                return true;
            }
        };
    } while (true);
    return true;
}

$all_links = [];
$requests = [];
$c = 0;
for ($i=0;$i<$argv[2];$i++) {
  $m = @mysqli_connect('127.0.0.1', '', '', '', 9306);
      if (mysqli_connect_error()) die("Cannot connect to Manticore\n");
      $all_links[] = $m;
  }

// init
mysqli_query($all_links[0], "drop table if exists tbl");
mysqli_query($all_links[0], "create table tbl(description text) index_exact_words='1' html_strip='1' html_remove_elements='style, script' index_field_lengths='1' stopword_step='0' blend_chars='+, &, U+23, -, /, U+5C, \"' blend_mode='trim_none, trim_head, trim_tail, skip_pure' morphology='lemmatize_ru_all, stem_en' min_stemming_len='2' stopwords_unstemmed='1' stopwords='en' rt_mem_limit='209715200'");

$batch = [];
$query_start = "insert into tbl(description) values ";

$faker = Faker\Factory::create();

echo "preparing...\n";
$error = false;
$cache_file_name = '/tmp/'.md5($query_start).'_'.$argv[1].'_'.$argv[3];
$c = 0;
if (!file_exists($cache_file_name)) {
    $batches = [];
    while ($c < $argv[3]) {
      $batch[] = "('".addslashes($faker->text(1024))."')";
      $c++;
      if (floor($c/1000) == $c/1000) echo "\r".round($c/$argv[3]*100,2)."%       ";
        if (count($batch) == $argv[1]) {
          $batches[] = $query_start.implode(',', $batch);
          $batch = [];
        }
    }
    if ($batch) $batches[] = $query_start.implode(',', $batch);
    file_put_contents($cache_file_name, serialize($batches));
} else {
    echo "found in cache $cache_file_name\n";
    $batches = unserialize(file_get_contents($cache_file_name));
}

$batchesMulti = [];
for ($n=0;$n<$argv[4];$n++) $batchesMulti = array_merge($batchesMulti, $batches);
$batches = $batchesMulti;

echo "querying...\n";

$t = microtime(true);

foreach ($batches as $batch) {
  if (!process($batch)) die("ERROR\n");
}

// wait until all the workers finish
do {
  $links = $errors = $reject = array();
  foreach ($all_links as $link)  $links[] = $errors[] = $reject[] = $link;
  $count = @mysqli_poll($links, $errors, $reject, 0, 100);
} while (count($all_links) != count($links) + count($errors) + count($reject));

echo "finished inserting\n";
echo "Total time: ".(microtime(true) - $t)."\n";
echo round($argv[3] * $argv[4] / (microtime(true) - $t))." docs per sec\n";

# php load_fulltext_only.php 1000 10 1000000 10

like this:

mysql> select * from tbl where match('@description Optio sit iusto S2222') order by id asc limit 0,20 OPTION ranker=none, cutoff=25000000, max_predicted_time=1000, max_matches=20; show plan\G show meta;
Empty set (0.00 sec)
--- 0 out of 0 results in 0ms ---

*************************** 1. row ***************************
Variable: transformed_tree
   Value: AND(
  AND(fields=(description), KEYWORD(optio, querypos=1)),
  AND(fields=(description), KEYWORD(sit, querypos=2)),
  AND(fields=(description), KEYWORD(iusto, querypos=3)),
  AND(fields=(description), KEYWORD(s2222, querypos=4)))
1 row in set (0.00 sec)

+---------------------+----------+
| Variable_name       | Value    |
+---------------------+----------+
| total               | 0        |
| total_found         | 0        |
| total_relation      | eq       |
| time                | 0.000    |
| local_fetched_docs  | 0        |
| local_fetched_hits  | 0        |
| local_fetched_skips | 0        |
| predicted_time      | 0        |
| keyword[0]          | iusto    |
| docs[0]             | 4205800  |
| hits[0]             | 5459440  |
| keyword[1]          | optio    |
| docs[1]             | 4210510  |
| hits[1]             | 5468040  |
| keyword[2]          | s2222    |
| docs[2]             | 0        |
| hits[2]             | 0        |
| keyword[3]          | sit      |
| docs[3]             | 8058370  |
| hits[3]             | 16439700 |
+---------------------+----------+
20 rows in set (0.00 sec)

mysql> select * from tbl where match('@description Optio sit iusto') order by id asc limit 0,20 OPTION ranker=none, cutoff=25000000, max_predicted_time=1000, max_matches=20; show plan\G show meta;
+---------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------+
| id                  | description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          | description_len |
+---------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------+
| 5839092040855453706 | Cumque id aspernatur aut omnis. Quia qui et autem magnam quia. Est est corporis facilis exercitationem dicta. Laboriosam debitis error ut repellendus ut. Optio laborum ullam ab aut animi voluptate aperiam ratione. Accusantium voluptatem perferendis consequuntur facere voluptatum dolores et. Dolorem dicta odio quia repellat. Voluptates qui quis natus mollitia expedita distinctio et explicabo. Voluptas aut magni deserunt necessitatibus voluptate commodi qui rerum. Ducimus eos culpa at ad enim enim tempore omnis. Nostrum eius molestiae voluptas officia dolorem voluptatem. Quo omnis veniam vitae vel consequatur et minima. Recusandae sit animi voluptatibus. Illum quo sequi eos a dolor. Vitae vel neque ipsum aut iusto voluptas consequatur. Et repellat consequatur error temporibus ut. Quidem autem debitis quas tenetur dolorum quo. Quia ipsam quis quia eum exercitationem.                                                                                                                                         | 122             |
| 5839092040855453719 | Fuga est aliquam inventore labore. Non repellat repudiandae alias dolor illo. Perspiciatis fuga consectetur corrupti cum sunt optio. Laborum cupiditate delectus temporibus temporibus est sunt. Quia ex modi veniam voluptatem vel voluptas laborum nam. Dolores sunt tempora illo ipsam facilis officia quia voluptatem. Qui pariatur voluptatem doloremque qui. Explicabo occaecati incidunt nihil magni voluptatem iste. Earum provident laudantium hic quo. Omnis voluptatem incidunt numquam nam asperiores recusandae sed in. Dignissimos ut repellat necessitatibus et. Tenetur voluptas vel aut porro doloremque illo. At omnis enim autem praesentium tempora. Qui totam voluptatem voluptas consequatur. Aut beatae iusto sit perspiciatis. Quam quod nobis eaque unde fugiat sequi dolorem qui. Magni voluptatum qui cum rerum fugit perspiciatis. Ullam perferendis quod error ut qui.                                                                                                                                                  | 117             |
| 5839092040855453723 | Quia at unde quibusdam. Quos reiciendis veniam autem pariatur commodi dolores corrupti. Esse et rerum harum eos. Vel est repellat libero velit. Minima itaque sit expedita eum et. Labore animi perferendis eveniet consequuntur et. Ut et maiores ut animi ab et. Tempore quisquam est sed error. Possimus ullam et sit praesentium culpa soluta. Voluptatem delectus facilis labore quidem vel sapiente. Dolores dolorem eveniet libero. Possimus sit voluptatem veritatis nam. Et sapiente nam quibusdam incidunt. Iusto ut excepturi doloremque quod quibusdam sit. Impedit ut voluptatum eius dolorem est quam et. Aliquam cupiditate delectus omnis quia nisi aut officiis. Laborum rerum sed non autem. Et qui eos quia omnis. Voluptate quae rerum minus optio dolor. Debitis nihil quae eius accusantium. Et rerum harum cum quam doloremque aliquid vero nam.                                                                                                                                                                              | 126             |
| 5839092040855453726 | Mollitia saepe reprehenderit consequatur est eveniet. Quis ab aliquam ad rem sequi. Repellendus praesentium provident non harum ea facilis. Amet ut ea et inventore magnam et. Optio sed quia neque praesentium quibusdam necessitatibus commodi mollitia. Praesentium fuga iste voluptatem aut autem molestias. Sed iusto enim ipsum voluptatum ducimus commodi sunt. Aut delectus qui perspiciatis inventore quam ipsum. Aut ut consequatur molestiae voluptatum illo. Voluptatem quisquam assumenda sapiente nulla consectetur quasi. Ratione dolores odit quidem vero autem quis aliquid. Sit perspiciatis nulla quia consequatur. Dolorem at odio autem et. Ullam aut quis illum et aut vitae. Aperiam magnam explicabo dolores iusto inventore pariatur. Impedit odit vero numquam. Molestiae omnis possimus neque odio. Ut iste eos voluptate et enim et excepturi. Adipisci illum omnis consectetur tempore quos ratione.                                                                                                                    | 125             |
| 5839092040855453743 | Ipsam et eaque facilis sunt perferendis id. Cum sapiente aspernatur debitis assumenda est. Eaque qui aliquid dolorem quia. Magni sit non laboriosam labore voluptate. Quis alias aut fugit ullam reprehenderit eos. Est pariatur et commodi qui labore neque. Dolorem sed a et harum animi voluptatem rerum. Laborum accusantium nisi eos aut est fugiat mollitia. Voluptatibus quam est unde laudantium voluptatem. Earum reprehenderit facilis nihil mollitia rem ab exercitationem. Sequi illo velit et expedita. Voluptatibus qui voluptatem consequatur. Facilis explicabo optio id ab perferendis eum vel. Quos qui maiores iusto quae ducimus tempora. Aliquam ut nulla molestiae dignissimos quis dolorum accusantium possimus. Et architecto quia et dolor molestiae qui. Blanditiis quos corporis sed odit libero adipisci aliquid. Repellendus molestiae ipsa voluptas sint. Numquam doloribus illo nihil blanditiis reiciendis eius fuga. Et non id fugit sapiente modi error. Corporis perferendis dignissimos libero explicabo.        | 140             |
| 5839092040855453749 | Id enim quis voluptas sit incidunt. Quos minus eos odio aliquid labore a est reiciendis. Placeat est harum dicta voluptate. Similique optio ab commodi quia. Sint aut labore molestias fuga. Molestiae sit omnis et. Cumque corrupti delectus aperiam delectus. Temporibus voluptatum iusto cum praesentium. Molestias iusto ut est corporis ut ea. Qui aut repudiandae officiis omnis possimus labore. Qui facilis et eius ullam ea dolorem quaerat. Cum optio maiores totam molestiae natus et earum iusto. Eligendi assumenda occaecati qui. Quis et quod voluptas fugiat voluptatem est earum. Id blanditiis blanditiis nihil aut animi tempore molestias. Et qui sit voluptate rerum fugiat facilis et. Vitae corrupti in fugiat est error. Nobis ipsa aspernatur possimus laudantium voluptatem ipsum earum quas. Et quae repudiandae laudantium molestiae delectus est nemo.                                                                                                                                                                  | 124             |
| 5839092040855453752 | Dicta consequatur distinctio vel laborum sit. Est recusandae nam dolorum velit quia qui. Est nisi saepe magnam ea. Eveniet optio perferendis magnam iure. In accusantium temporibus error iste. Iusto error blanditiis voluptas magnam magni. Totam et molestiae officiis sunt accusantium. Rerum et molestiae voluptatem ut quidem repellendus ut. Excepturi modi quo sit enim dolor autem voluptate. Blanditiis suscipit ut et praesentium. Ut deserunt et omnis vitae asperiores est nobis. Autem a laudantium non possimus repellendus similique. Corrupti delectus facere accusamus dolore incidunt non. Et nobis consectetur consequatur. Suscipit molestiae at qui laborum. Ullam sint tenetur pariatur earum et. Fuga reprehenderit odio quidem nesciunt expedita at adipisci minus. Qui ut reiciendis et totam alias et dolore. Dicta rerum vel voluptas nostrum et. Dolorem vero animi illo.                                                                                                                                               | 121             |
| 5839092040855453757 | At vel modi officiis consequuntur sed. Non accusamus autem alias et quod. Esse est alias minima optio excepturi ratione velit. Est tempora autem officiis voluptatem cupiditate. Voluptatem cupiditate neque est sed iusto qui et. Et atque autem animi quia corrupti nobis sapiente. Fugiat et ut cupiditate error quasi. Quas laborum natus voluptatibus voluptatibus consequatur amet expedita. Iusto enim sit adipisci et officia et expedita. Dolore dicta debitis vel et asperiores non ab. Et deleniti iusto itaque perspiciatis ut quasi est eos. Atque ad necessitatibus voluptas deleniti quod. Quas voluptas quia soluta quo et inventore voluptate nostrum. Veritatis cumque non voluptas aspernatur facilis nulla. Voluptas ut dolorem corrupti eum vel aut. Est incidunt qui sequi consectetur et. Sed ipsum doloremque magnam et odit. Deserunt quod ex qui porro. Quod reprehenderit voluptatem et fugit. Quia quae vel voluptatem quisquam labore sit dolor. Maxime enim et fugiat.                                                 | 143             |
| 5839092040855453760 | Vel dignissimos assumenda illum cumque ut velit. Unde quod voluptatibus repudiandae. Eos qui maxime cupiditate cupiditate odio recusandae sint. Eos non placeat hic error sed. Repudiandae aut quam eos. Ea iste voluptatibus aut laborum. Cum laboriosam placeat sapiente aut corrupti eos. Vitae rerum enim consectetur. Est qui consequatur sint nobis fugit commodi ea provident. Ad nulla nihil vitae numquam. Reiciendis quia perspiciatis illo commodi repellat ea quia. Ratione rerum doloremque rem quasi sit magni. Eum quas id eius et. Ut nam voluptas eum et aspernatur laborum iusto. Delectus necessitatibus consequatur numquam. Odit ea ipsa voluptatem. Sunt qui odit sit similique blanditiis dolores optio. Quia sit necessitatibus delectus aliquam dolor veniam illum doloremque. Iure a est maxime. Excepturi omnis et libero. Eaque ut non velit dolor aliquid sint. Et et laboriosam et reiciendis. Aut dicta consequatur officiis quis.                                                                                    | 136             |
| 5839092040855453761 | Commodi aut odit sit molestiae voluptatem ea. Est voluptas quibusdam alias voluptatem commodi mollitia. Ut sed iste odio in numquam quia saepe ab. Velit aut modi consequuntur dicta exercitationem cumque eligendi. Eos omnis quia qui quo sint vero sint optio. Distinctio eum hic atque iste. Aperiam voluptas magnam voluptas optio. Recusandae beatae nisi aut aut qui iusto. Minus unde aliquam autem qui ut. Provident non itaque et fugit at veritatis placeat. Est quaerat optio mollitia voluptatem delectus et dolore. Eos sed officiis eveniet ut in recusandae alias harum. Nesciunt rerum ut quia est nam placeat. Nulla reprehenderit quis repellendus consequatur velit. Temporibus commodi dignissimos aut id. Sint consequatur iste qui reprehenderit odio nihil ipsum et. Quis voluptas sint provident dolor accusamus cum cumque. Veniam vel ipsa sed dicta laboriosam. Ut ut ut quaerat nam accusamus dignissimos laborum. Est autem sint officiis earum velit.                                                                 | 140             |
| 5839092040855453771 | Beatae optio rerum fuga commodi veniam. Eligendi voluptates occaecati eaque et exercitationem. Laborum amet consectetur in cupiditate ipsam repudiandae. Voluptate et nulla aut omnis qui iusto necessitatibus distinctio. Voluptatem perferendis rerum mollitia sit. Cupiditate recusandae eveniet rerum incidunt aut et. Veniam ipsam ducimus adipisci delectus. Blanditiis totam illum ipsa debitis est. Ipsa et quibusdam qui facilis. Aperiam commodi nihil culpa magnam neque sint quidem necessitatibus. Voluptates rerum exercitationem eveniet sed ullam assumenda. Quis saepe perspiciatis rerum porro in molestiae adipisci dicta. Nam deleniti eius non doloremque iste. Quibusdam distinctio est est aliquid porro quibusdam omnis. Dolores velit facere voluptates perspiciatis. Voluptas eligendi culpa ad rem quis quam ab. Ut perferendis non sit ea ad eveniet quasi. Possimus qui animi eveniet commodi quidem qui assumenda. Iusto suscipit aut consectetur quia vero neque omnis numquam.                                       | 131             |
| 5839092040855453773 | Et est fugit nesciunt animi architecto et voluptatem hic. Ullam ipsum occaecati sunt. Eum soluta expedita praesentium repellat debitis alias. Voluptas alias architecto quidem aut sunt minima. Quia laudantium et doloribus et. Consequatur corrupti saepe in eos enim. Est error et iusto aut. Tempore consequatur qui et quis numquam nesciunt. Iste et sint optio at vel. Nemo maiores deserunt voluptas perspiciatis adipisci earum exercitationem. Minima necessitatibus dolor in tenetur est pariatur vitae. Ut delectus ab molestiae libero voluptatem eum. Voluptas omnis laboriosam repellendus accusantium dolor. Laborum nam qui in aperiam. Et autem exercitationem sint dignissimos eius doloribus. Delectus quos sint quo pariatur dolorem rerum dolor. Perferendis eveniet et praesentium placeat. Mollitia accusantium reprehenderit voluptatem. Minus ut aperiam ducimus. Iste quidem sit magnam dignissimos aut qui similique.                                                                                                    | 122             |
| 5839092040855453776 | Sunt illo minus sunt enim. Magni sint non sit qui sunt repellat maiores. Saepe eos aliquid adipisci dicta autem corrupti nam. Debitis commodi quas modi blanditiis doloremque. Consequuntur accusantium eius vitae. Possimus dolore corporis ipsam corporis quia minus. Iusto autem et aut laboriosam. Sed veritatis labore ea laudantium sit. Nobis enim nemo saepe porro officiis nobis. Et voluptatem est ullam rerum dolor tempore quia. Eveniet ipsum dolores perspiciatis omnis ut. Nobis est nisi quibusdam dolor hic veritatis culpa. Amet reiciendis velit eveniet voluptatibus. Molestiae ipsam exercitationem minus soluta fuga harum ut. Voluptatem consequatur cupiditate ea animi ipsum maxime sint. Aut sapiente quia ut aut assumenda optio laudantium. Facilis voluptas ut commodi recusandae. Consectetur ut qui est veniam incidunt quibusdam laudantium sed. Dicta pariatur aut placeat a et quisquam dolorem. Aut alias cumque aspernatur ut ut.                                                                                | 134             |
| 5839092040855453778 | Accusamus sint laboriosam ex. Et omnis consequuntur sint qui velit aut. Cupiditate delectus optio hic quidem omnis dolorem. Quibusdam fugiat minima et dolor labore. Praesentium voluptatibus quisquam iusto nihil qui ad voluptatem ut. Iste aut dolores blanditiis in. Rerum nulla impedit nihil sint. Ullam quia suscipit provident sit facilis qui. Amet consequuntur ab harum eos. Velit dolor eum temporibus aperiam nostrum ut et. Aliquid et molestias consequuntur nobis et voluptatem quis. Aperiam id dolores et necessitatibus molestiae nobis sint assumenda. Tenetur rerum iure et maiores nostrum. Iusto ut doloremque magni ipsum sit dolores. Nostrum qui nam eos. Facilis aspernatur quia eveniet suscipit. Voluptas et autem et fugiat deleniti dolores molestiae. Quia maxime deleniti et accusantium iure rerum et nihil. Incidunt ea impedit quaerat et quis et. Fugiat natus tenetur perspiciatis dolores labore ipsum. Aliquid mollitia explicabo sint quasi omnis.                                                          | 138             |
| 5839092040855453785 | Omnis nobis et incidunt ex. Quo et voluptatum provident et et modi illum. Sunt nisi magni esse quia. Est quas rerum porro distinctio dicta rerum cumque. Incidunt expedita autem doloremque ut numquam soluta et. Rerum aspernatur illo illum distinctio quis fugiat sed. Est deserunt quis laudantium sequi optio repellendus. In consequatur rerum dignissimos. Ad quae neque quae accusamus velit voluptatem eum. Ut non dolore ipsam nobis impedit est libero qui. Voluptatem culpa molestias eveniet dolores minus. Porro omnis quam et qui iusto nobis qui fugiat. Odio odio vero aut. Qui rerum voluptates labore laudantium nostrum nisi omnis voluptatibus. Sed consequatur et earum alias nemo. Rerum atque occaecati commodi nostrum iusto dolor. Sed et sit totam ab. Recusandae similique fuga eos illum culpa soluta. Quaerat officiis est at adipisci laudantium sapiente iste. Non totam enim esse autem debitis. Itaque voluptatibus facere nihil eveniet qui corporis.                                                             | 142             |
| 5839092040855453791 | Nam id blanditiis ipsum non. Aut officiis nihil provident omnis ut et. Veniam repellat sit rem fugit rerum id. Maiores consequatur quam cum quod eligendi aliquam asperiores aut. Id rerum neque iusto molestias officia non. Magnam animi voluptatem nam nemo corporis. Quos non error est consequuntur minima. Et ratione mollitia blanditiis. Quia provident aut hic quae beatae animi enim. Id quia sit eveniet quis. Exercitationem debitis excepturi id eaque. Cumque et non et aut ab qui vitae. Voluptatem tempore eaque sunt voluptas dolorum. Nostrum sunt reiciendis consequatur facilis facere saepe. Omnis quisquam sunt aut officia. Adipisci ea impedit architecto. Blanditiis sit magni non voluptatem. Error eaque eius et dicta autem. Porro cum nisi est officiis. Voluptatibus debitis esse neque ea ut rerum sunt optio. Suscipit facere vel tempora adipisci optio illum dolorem. Laudantium eaque quia sunt. Reprehenderit ratione ad quis.                                                                                   | 140             |
| 5839092040855453795 | Incidunt praesentium assumenda commodi aut. Itaque nulla quisquam dolore nihil fugiat. Repellat ea voluptatem nobis placeat molestiae similique. Corporis ratione dolor eius voluptatum qui ut. Mollitia inventore voluptates corporis sed placeat aut autem. Consequuntur animi consequuntur provident atque nostrum nostrum ex veritatis. Consequatur est cumque accusantium labore. Aut suscipit aut ut quam perspiciatis sit. Eos maiores iusto modi qui vero. Necessitatibus maiores perspiciatis suscipit ut voluptatibus sed. Voluptatibus cumque placeat molestias iure saepe quia voluptas. Labore esse est a sequi consequuntur quia. Non qui et et ratione quod. Vel omnis deleniti porro ut. Atque perferendis aut amet cupiditate hic est ratione. Quia inventore ratione aliquam harum omnis ipsa id. Nemo rerum natus rerum rem sit quis. Laudantium voluptates optio totam natus est eius nostrum sint. Sit est nam ipsa quae facere et magnam dolorem. Nemo et unde illum ipsam vel quo. Quisquam similique repudiandae dolores ut. | 145             |
| 5839092040855453801 | Totam nostrum dolorem molestias iste. Ea eos omnis vel fugit sunt. Voluptas ex soluta minima libero. Esse veniam assumenda deserunt qui occaecati consequuntur. Facilis et expedita sit doloremque optio. Maxime ut minus expedita molestiae explicabo praesentium qui. Cupiditate voluptates voluptatem molestiae perferendis sed. Ipsa reiciendis voluptates soluta quibusdam voluptatem voluptatem ex. Dignissimos quia esse quibusdam sunt necessitatibus non consequuntur vel. Dolorem et aut iusto. Architecto distinctio possimus minus excepturi dolor. Natus beatae ratione sed eos aut odit. Fugiat voluptate nisi est ratione sequi consectetur et autem. Rerum ipsum enim non cumque delectus laborum. Sint ex earum voluptas ut aut voluptatum. Ducimus porro pariatur harum et. Magnam cum excepturi repellat non quae nemo. Ipsam et laudantium qui aut. Dolor soluta quasi sed autem ut quia error aspernatur. Officia deleniti beatae aspernatur. Voluptates nihil temporibus veritatis perspiciatis.                               | 135             |
| 5839092040855453806 | Excepturi quia et dolores doloremque quas repudiandae. Alias modi sint eos assumenda reiciendis aspernatur. Quibusdam consectetur debitis quam doloremque et ut vel quo. Aut nobis distinctio nobis et hic et. Optio ullam odit necessitatibus sequi. Aliquam dolorum quis illo sint. Qui laudantium possimus corporis distinctio et repudiandae. Est ea facilis dignissimos ut quia veritatis in iste. Ex tempore autem voluptates pariatur. Quia rerum nulla dolorem inventore quod quam. Culpa totam voluptatem consectetur expedita neque sit culpa. Qui rerum porro impedit quis corrupti iusto vel. Non sit nobis id. Quia id vel cum nisi quidem. Aut velit repellendus qui sint velit architecto reprehenderit. Quia eum doloremque culpa eos numquam sed ullam aliquam. Harum dignissimos neque molestiae ut expedita illo. Accusamus delectus et sint repellendus et iusto similique. Libero aut dolorem nisi. Amet qui culpa quia rem. Omnis qui et quo quisquam beatae iusto eos reiciendis.                                             | 143             |
| 5839092040855453808 | Est odio blanditiis est aliquam autem laboriosam dolorem. Vitae ea sapiente rem est ut distinctio. Sunt vel quod dolore eligendi asperiores ipsam voluptatem. Tenetur alias hic enim id molestias. Quis quo totam provident. Quis at odio dolorem. Dolores ea soluta et iusto sapiente. Et eligendi illo numquam ratione voluptas. Autem earum tenetur exercitationem voluptatem optio commodi voluptatem consequatur. Quod eos ad minus placeat. Voluptatem nisi eos et qui. Qui optio sit cumque. Dolore minus hic aut aperiam aliquid non. Eaque ea similique molestiae a sunt. Quasi similique ut repudiandae sunt voluptates. Consequatur voluptate laboriosam repellat enim. Dolores pariatur optio necessitatibus quidem possimus omnis laboriosam quasi. Aut eum officia eum repellat laudantium. Deserunt sunt unde libero quos debitis nemo consequatur voluptatum. Voluptatum voluptatem aliquam repudiandae id necessitatibus. Eum voluptas perferendis aut quia.                                                                        | 129             |
+---------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------+
20 rows in set (0.03 sec)
--- 20 out of 1424550 results in 34ms ---

*************************** 1. row ***************************
Variable: transformed_tree
   Value: AND(
  AND(fields=(description), KEYWORD(optio, querypos=1)),
  AND(fields=(description), KEYWORD(sit, querypos=2)),
  AND(fields=(description), KEYWORD(iusto, querypos=3)))
1 row in set (0.00 sec)

+---------------------+----------+
| Variable_name       | Value    |
+---------------------+----------+
| total               | 20       |
| total_found         | 1424550  |
| total_relation      | eq       |
| time                | 0.034    |
| local_fetched_docs  | 1424550  |
| local_fetched_hits  | 0        |
| local_fetched_skips | 0        |
| predicted_time      | 182      |
| keyword[0]          | iusto    |
| docs[0]             | 4205800  |
| hits[0]             | 5459440  |
| keyword[1]          | optio    |
| docs[1]             | 4210510  |
| hits[1]             | 5468040  |
| keyword[2]          | sit      |
| docs[2]             | 8058370  |
| hits[2]             | 16439700 |
+---------------------+----------+
17 rows in set (0.00 sec)

Can you share your table by sending it to our write-only S3 or any other mean? https://manual.manticoresearch.com/Reporting_bugs#Uploading-your-data

@starinacool
Copy link
Author

@sanikolaev Done

@sanikolaev
Copy link
Collaborator

Thanks!

MRE

mysql> drop table if exists t; create table t(f text) expand_keywords='1' morphology='stem_en' index_exact_words='1'; insert into t(f) values('running'); select * from t where match('run 123') option max_predicted_time=1000; show meta;
--------------
drop table if exists t
--------------

Query OK, 0 rows affected (0.01 sec)

--------------
create table t(f text) expand_keywords='1' morphology='stem_en' index_exact_words='1'
--------------

Query OK, 0 rows affected (0.00 sec)

--------------
insert into t(f) values('running')
--------------

Query OK, 1 row affected (0.00 sec)

--------------
select * from t where match('run 123') option max_predicted_time=1000
--------------

Empty set (0.00 sec)
--- 0 out of 0 results in 0ms ---

--------------
show meta
--------------

+---------------------+-------+
| Variable_name       | Value |
+---------------------+-------+
| total               | 0     |
| total_found         | 0     |
| total_relation      | eq    |
| time                | 0.000 |
| local_fetched_docs  | 1     |
| local_fetched_hits  | 0     |
| local_fetched_skips | 2     |
| predicted_time      | 0     |
| keyword[0]          | 123   |
| docs[0]             | 0     |
| hits[0]             | 0     |
| keyword[1]          | =123  |
| docs[1]             | 0     |
| hits[1]             | 0     |
| keyword[2]          | =run  |
| docs[2]             | 0     |
| hits[2]             | 0     |
| keyword[3]          | run   |
| docs[3]             | 1     |
| hits[3]             | 1     |
+---------------------+-------+
20 rows in set (0.00 sec)

Expected:

| local_fetched_docs  | 0     |

Another MRE on dev2:9306 with higher response time based on the table files provided by @starinacool :

mysql> SELECT id FROM listing2 WHERE match('значки рубли S2222') option max_predicted_time=10000; show meta;
Empty set (0.01 sec)
--- 0 out of 0 results in 8ms ---

+---------------------+---------------+
| Variable_name       | Value         |
+---------------------+---------------+
| total               | 0             |
| total_found         | 0             |
| total_relation      | eq            |
| time                | 0.008         |
| local_fetched_docs  | 1047779       |
| local_fetched_hits  | 0             |
| local_fetched_skips | 42706         |
| predicted_time      | 154           |
| keyword[0]          | =значки       |
| docs[0]             | 1838212       |
| hits[0]             | 1942709       |
| keyword[1]          | =рубли        |
| docs[1]             | 776           |
| hits[1]             | 780           |
| keyword[2]          | s2222         |
| docs[2]             | 0             |
| hits[2]             | 0             |
| keyword[3]          | значок        |
| docs[3]             | 1869301       |
| hits[3]             | 2522202       |
| keyword[4]          | рубль         |
| docs[4]             | 672869        |
| hits[4]             | 893794        |
+---------------------+---------------+
23 rows in set (0.00 sec)

Expected zero response time like with this query:

mysql> SELECT id FROM listing2 WHERE match('=значки =рубли S2222') option max_predicted_time=10000; show meta;
Empty set (0.00 sec)
--- 0 out of 0 results in 0ms ---

+---------------------+---------------+
| Variable_name       | Value         |
+---------------------+---------------+
| total               | 0             |
| total_found         | 0             |
| total_relation      | eq            |
| time                | 0.000         |
| local_fetched_docs  | 0             |
| local_fetched_hits  | 0             |
| local_fetched_skips | 0             |
| predicted_time      | 0             |
| keyword[0]          | =значки       |
| docs[0]             | 1838212       |
| hits[0]             | 1942709       |
| keyword[1]          | =рубли        |
| docs[1]             | 776           |
| hits[1]             | 780           |
| keyword[2]          | s2222         |
| docs[2]             | 0             |
| hits[2]             | 0             |
+---------------------+---------------+
17 rows in set (0.00 sec)

@sanikolaev sanikolaev added bug and removed waiting Waiting for the original poster (in most cases) or something else labels Dec 3, 2023
@glookka
Copy link
Contributor

glookka commented Dec 10, 2023

Done in 2303024

@glookka glookka closed this as completed Dec 10, 2023
@sanikolaev sanikolaev added the rel::upcoming Upcoming release label Dec 11, 2023
@sanikolaev sanikolaev added rel::6.3.0 Released in 6.3.0 and removed rel::upcoming Upcoming release labels May 23, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug rel::6.3.0 Released in 6.3.0
Projects
None yet
Development

No branches or pull requests

3 participants