<?xml version="1.0" encoding="utf-8"?> 
<rss version="2.0"
  xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd"
  xmlns:atom="http://www.w3.org/2005/Atom">

<channel>

<title>Блог Михаила Озорнина: заметки с тегом поиск</title>
<link>https://mikeozornin.ru/blog/tags/poisk/</link>
<description>Главная · Блог · Работы ·</description>
<author>Михаил Озорнин</author>
<language>ru</language>
<generator>E2 (v3798; Aegea)</generator>

<itunes:owner>
<itunes:name>Михаил Озорнин</itunes:name>
<itunes:email></itunes:email>
</itunes:owner>
<itunes:subtitle>Главная · Блог · Работы ·</itunes:subtitle>
<itunes:image href="" />
<itunes:explicit></itunes:explicit>

<item>
<title>На что обратить внимание, когда делаешь поиск</title>
<guid isPermaLink="false">143</guid>
<link>https://mikeozornin.ru/blog/all/search-ui-tricks/</link>
<pubDate>Tue, 21 Apr 2020 22:55:55 +0300</pubDate>
<author>Михаил Озорнин</author>
<comments>https://mikeozornin.ru/blog/all/search-ui-tricks/</comments>
<description>
&lt;p&gt;Недавно я сделал поиск в &lt;a href="http://mikeozornin.ru/blog/all/vino-iz-parfenona/"&gt;Винах Парфенона&lt;/a&gt;. Пока делал его, пришлось запрограммировать некоторые мелочи. Их часто пропускают, поэтому решил вот написать.&lt;/p&gt;
&lt;p&gt;&lt;aside class="aside-margin-right"&gt;&lt;a href="https://twitter.com/mikeozornin/status/1252159976967213061"&gt;twitter.com/mikeozornin/status/1252159976967213061&lt;/a&gt;&lt;br/&gt;Исходный твитер-тред&lt;/aside&gt;&lt;/p&gt;
&lt;p&gt;Изначально это был твиттер-тред, для удобства я перенес в пост.&lt;/p&gt;
&lt;h3&gt;1. Регистронезависимый поиск&lt;/h3&gt;
&lt;p&gt;Поиск почти всегда лучше сделать регистронезависимым. Нет ничего более неудобного, чем регистрозависимый поиск. Если кому-то нужна регистрозависимость — лучше сделать опцией.&lt;/p&gt;
&lt;h3&gt;2. Искать с первого символа&lt;/h3&gt;
&lt;p&gt;Ограничения «искать с третьего символа» обычно причиняют немало неудобств, лучше искать сразу.&lt;/p&gt;
&lt;h3&gt;3. Искать по всем полям сразу&lt;/h3&gt;
&lt;p&gt;Обычно нужно искать нужно в большом числе полей сразу, а не устраивать «Поиск по названию», «Поиск по винограду» и т. д.&lt;/p&gt;
&lt;p&gt;Например, можно искать сразу по всем отображаемым полям.&lt;/p&gt;
&lt;h3&gt;4. Делать trim&lt;/h3&gt;
&lt;p&gt;Почти всем данным при вводе, поисковому запросу в том числе, нужно делать trim — убирать все пробельные символы с концов строки (внутри нельзя).&lt;/p&gt;
&lt;h3&gt;5, 6 и 7. Как делить поисковый запрос на токены&lt;/h3&gt;
&lt;p&gt;Запрос делится по пробельным символам на части, каждая часть ищется независимо. Чтобы искать словосочетание, нужно взять его в кавычки.&lt;/p&gt;
&lt;div class="e2-text-table"&gt;
&lt;table cellpadding="0" cellspacing="0" border="0"&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;Запрос&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;Что должно найтись&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Pinot toscana&lt;/td&gt;
&lt;td&gt;Хотя бы одно поле содержит «Pinot»&lt;br/&gt;И&lt;br/&gt;Хотя бы одно поле содержит «toscana»&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;’’Pinot toscana’’&lt;/td&gt;
&lt;td&gt;Хотя бы одно поле содержит «Pinot toscana»&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;красное ’’Pinot toscana’’&lt;/td&gt;
&lt;td&gt;Хотя бы одно поле содержит «красное»&lt;br/&gt;И&lt;br/&gt;Хотя бы одно поле содержит «Pinot toscana»&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;h3&gt;8, 9 и 10.  Диакритические знаки&lt;/h3&gt;
&lt;p&gt;Нужно учитывать диакритические знаки, искать и с ними, и без них.&lt;/p&gt;
&lt;p&gt;Châteauneuf-du-Pape должен находиться по запросам:&lt;br /&gt;
Châteauneuf-du-Pape&lt;br /&gt;
Chateauneuf-du-Pape&lt;/p&gt;
&lt;p&gt;Это важно потому, что не все помнят как правильно. Кто-то может забыть сам, а кто-то скопирует текст там, где не знали как правильно. Например, Château очень часто пишут без Accent circonflexe (Chateau).&lt;/p&gt;
&lt;p&gt;&lt;aside class="aside-margin-right"&gt;Меня исправили и предложили более правильный способ: через нормализацию нужно прогонять как строку, в которой ищут, так и поисковый запрос. Тогда никаких сложностей не будет.&lt;/aside&gt;&lt;/p&gt;
&lt;p&gt;Нельзя просто сделать замену диакритических знаков на обычные. Должно найтись и так, и так. Человек, который пишет правильно, страдать не должен.&lt;/p&gt;
&lt;p&gt;Не делайте замену символов руками (â → a, á → a, à → a, å → a и т. д.), вы задолбаетесь и что-то пропустите. В вашем языке программирования, скорее всего, есть функция нормализации. Например, вот в джаваскрипте:&lt;br /&gt;
&lt;a href="https://developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Global_Objects/String/normalize"&gt;developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Global_Objects/String/normalize&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Я использовал вот такой код для нормализации (откуда-то скопипастил)&lt;/p&gt;
&lt;pre&gt;
value.normalize(’NFKD’).replace(/[^\w\s.-_\/]/g, ’’).toLocaleLowerCase();
&lt;/pre&gt;
&lt;h3&gt;Посмотреть в жизни&lt;/h3&gt;
&lt;p&gt;Попробуйте все описанное выше в &lt;a href="http://mikeozornin.ru/blog/all/vino-iz-parfenona/"&gt;Винах Парфенона&lt;/a&gt;.&lt;/p&gt;
&lt;h3&gt;Что я забыл?&lt;/h3&gt;
</description>
</item>


</channel>
</rss>