-
Notifications
You must be signed in to change notification settings - Fork 242
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
Поиск не парсит слэши #1052
Comments
Это особенность работы ts_vector, он не в одном из конфигов не считает / как разделитель слов, мало ли, вдруг ищете http/2.0 и хотите чтобы он находил только его, а не http и 2 и 0 :) мне видится четыре решения:
|
@zyuhel Могу только предложить регулярку для поиска элементов через слэши которые не похожи на веб адрес: |
@GRbit с учетом того что код кидает в django'вский SearchVector, вот так _multi_search_vector("full_name", weight="A") , а дальше это идет в ts_vector, я опасаюсь что приделывание туда регулярок будет выглядеть максимально костыльно. я ни черта не разбираюсь в django, мне на ум приходят только костыли, в виде создания вирт колонки, с нужным преобразованием, и потом использовать ее как дополнительное поле по которому ищется. Но оно даже кажется не красивым |
@vas3k тонкий стеб? :) |
Не так прочитал |
@zyuhel Я с джанго не работал никогда. Как видишь ток в регулярки могу) Ну и когда ты говоришь про вирт колонки мне это ни о чём не говорит, к сожалению. Почитал код немножк. Ну регулярки смотрятся костыльно, но работать же будут) Вариант который мне видится более "общим" это добавление доп поля в Post типа "search_additions" и его индексирование. Может это и есть то что ты имел ввиду с вирт колонкой. Тут как говорится "шо то костыль, шо это костыль". Грамотно будет фиксить то как индекс строится и учить его отличать ссылки от простого перечисления через слэши, при этом давать больший вес на матч всего куска со слэшами и меньший на мэтч отдельных элементов, но тип кто за такую фундаментальную штуку возьмётся? Имхо костылю главное лишних сайд-эффектов не добавлять. Из проблем с регуляркой которые я вижу, не смотря на то что они работают быстро, гонять её по всему тексту поста возможно не стоит и можно ограничиться тайтлом. |
Я к сожалению на PyCharm community editions и с питоном последний раз связывался лет 7 назад, так что мне стыдно PR открывать, но по-моему что-то такое должно помочь. Можешь дать небольшой фидбек? Если кажется норм, то я могу PR открыть
|
Вообще лучше сразу PR сделать, его сильно удобнее ревьюить |
@ngrishanov спасибо, это было полезно, теперь я осмелел до PR. Сделаю на днях, но мне с ним явно нужна будет помощь)
|
ку, а почему пункт 2 не вариант? я одно время активно внедрял сфинкс на волне его популярности, посмотрел мантик -- вроде всё просто. морфология из коробки, стоп-слова, словоформы итд итп всё есть. да и синтаксис поиска вполне понятный и богатый (https://manual.manticoresearch.com/Searching/Full_text_matching/Operators#Full-text-operators) mysql> create table posts(`id`, `title` text, `text` text, `post_id` string, `type` string, `is_public` bool, `hotness` integer, `room_id` integer) morphology='stem_enru';
Query OK, 0 rows affected (0,01 sec)
mysql> insert into posts values (0, 'Клубные аккаунты в децентрализованных сетях типа mastodon/nostr/minds/diaspora/dtube', 'Есть посты про наши твиттеры, инстаграмы и фейсбуки, а про новомодные mastodon/nostr/whatever пока \(вроде\) ещё ничего официально не было.\n\nДавайте пиарить друг другу свои трансантиметакартошкафриджаз-аккаунты в
децентрализованных океанах слов, плавающих в пустоте одиночества китайской комнаты наших душ?..\n\nЯ сама, к сожалению, ничего туда не пишу \(ни в мастодон, ни в ностр\), но с удовольствием набрала бы себе более милую ленту.', '387ec440-64b6-4412-b8ed-1b6106c2c96e', 'question',1,0,1);
Query OK, 1 row affected (0,00 sec) и результат mysql> SELECT *, highlight() FROM posts WHERE match('mastodon');
+---------------------+---------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------+----------+-----------+---------+---------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| id | title | text | post_id | type | is_public | hotness | room_id | highlight() |
+---------------------+---------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------+----------+-----------+---------+---------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| 4182053103148728335 | Клубные аккаунты в децентрализованных сетях типа mastodon/nostr/minds/diaspora/dtube | Есть посты про наши твиттеры, инстаграмы и фейсбуки, а про новомодные mastodon/nostr/whatever пока (вроде) ещё ничего официально не было.
Давайте пиарить друг другу свои трансантиметакартошкафриджаз-аккаунты в децентрализованных океанах слов, плавающих в пустоте одиночества китайской комнаты наших душ?..
Я сама, к сожалению, ничего туда не пишу (ни в мастодон, ни в ностр), но с удовольствием набрала бы себе более милую ленту. | 387ec440-64b6-4412-b8ed-1b6106c2c96e | question | 1 | 0 | 1 | Клубные аккаунты в децентрализованных сетях типа <b>mastodon</b>/nostr/minds/diaspora/dtube | ... и фейсбуки, а про новомодные <b>mastodon</b>/nostr/whatever пока (вроде) ещё ... |
+---------------------+---------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------+----------+-----------+---------+---------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0,00 sec)
--- 1 out of 1 results in 0ms --- ну и реализовать 4 метода:
раскидать их по нужным местам как |
Чеклист
Описание бага
Есть пост https://vas3k.club/question/18282/
Очень хочется его найти по слову mastodon, но так как рядом с ним слэш — поиск не выдаёт ничего путного:
https://vas3k.club/search/?q=mastodon&type=post
Ожидаемый результат
Видеть пост в результатах поиска
Шаги к воспроизведению
Да вроде и так всё ясно
The text was updated successfully, but these errors were encountered: