|
hibernate search wildcards
|
|||
---|---|---|---|
#18+
вопрос такой интересный.. а он вообще умеет работать с вайлдкартой когда она не в конце текста а скажем, посередине? или я что то не то делаю? у меня есть строчка 200000025 я делаю матч 20000002* -- находит я делаю матч 2*25 - не находит. причем вижу в эластике оно работать должно а через хибер апи по ходу что то не так поиск строю так: searchSession.search(IndexedEntity.class) .where(factory -> factory.simpleQueryString().fields(filterBy) .matching("20000*25") ) .fetchHits(offset, limit); и вот тут вот не отвечает так как должно было бы. или там еще какая то магия есть о которой я не знаю? в самой доке по хиберу вообще говорят типа не юзай вайлдкарт. а что тогда делать когда надо такой поиск? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.08.2020, 09:56 |
|
hibernate search wildcards
|
|||
---|---|---|---|
#18+
rtfm как всегда: https://docs.jboss.org/hibernate/search/6.0/reference/en-US/html_single/#preface авторList<Book> hits = searchSession.search( Book.class ) .where( f -> f.wildcard().field( "description" ) .matching( "rob*t" ) ) .fetchHits( 20 ); ... |
|||
:
Нравится:
Не нравится:
|
|||
13.08.2020, 10:22 |
|
hibernate search wildcards
|
|||
---|---|---|---|
#18+
andreykaT, из баз данных. Наилучший план выполнения когда поле равно константе. Будет использован индекс. Код: java 1.
Более худший план - когда wildcard стоит где-то в середине поискового выражения но мы всё таки можем использовать индекс. Короче fts не будет. Все пространсто индекса будет разрезано на 3 части условно. Все что предшествовало двойке. То что нужно для выборки. И все что старше двойки. По сути будет использовано "2%" с дополнительной дофильтрацией уже по "2%25". Если повезет. Если двойка - высокоселективна - то мы выберем 10% от всего объема индекса что не так уж плохо. Код: java 1.
И самый плохой план. Будет всегда Full-table-scan. Потому-что лидирующий мета-символ % не дает нам возможности выйти на листовые узлы индекса никоим образом. Последний случай можно пофиксить.... эээ может быть виртуальным полем с реверсом и индексом по нему или функциональным индексом... но здесь я не готов спорить. Не знаю как оно щас. Код: java 1.
С практической точки зрения второй вариант тоже может стать плохим. Надо смотреть средствами Oracle/PG/MySQL или что вы там юзаете как будет работать оптимизатор. Главный вопрос - во что соберет хибернейт этот wildcard. Это будет определять перформанс. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.08.2020, 16:28 |
|
hibernate search wildcards
|
|||
---|---|---|---|
#18+
таки да. это хорошо. когда база скл есть. :) ... |
|||
:
Нравится:
Не нравится:
|
|||
13.08.2020, 22:24 |
|
|
start [/forum/topic.php?fid=59&msg=39989237&tid=2120714]: |
0ms |
get settings: |
26ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
42ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
129ms |
get tp. blocked users: |
1ms |
others: | 291ms |
total: | 520ms |
0 / 0 |