Как указано в заголовке, что такое полнотекстовый индекс и когда его использовать?Что такое полнотекстовый индекс и когда его использовать?
ответ
В базах данных индексы обычно используются для повышения производительности при поиске чего-то определенного в вашем предложении where. Однако, когда дело доходит до фильтрации некоторого текста, например. используя что-то вроде WHERE TextColumn LIKE '%searchstring%'
, поиск выполняется медленно, потому что работа регулярных индексов базы данных оптимизирована для совпадений с «целым контентом» столбца, а не только его частью. В частности, поиск LIKE, который включает в себя подстановочные знаки, не может использовать какой-либо индекс.
Как указано в комментарии ниже, MySQL нуждается в синтаксисе MATCH() ... AGAINST
для поиска в полнотекстовом индексе; BTW это зависит от поставщика базы данных. В MS SQL вы можете использовать CONTAINS
, поэтому имейте это в виду, когда вы планируете также поддерживать другие базы данных.
Полнотекстовые индексы работают лучше для обычного текста, потому что они оптимизированы для этих типов столбцов. Очень упрощено: они разбивают текст на слова и делают указатель на слова, а не весь текст. Это значительно ускоряет поиск текста при поиске конкретных слов.
Индексы FULLTEXT ничего не сделают для предложений LIKE - они будут использоваться только для предложений 'MATCH() ... AGAINST'. Предложения LIKE, которые начинаются с '' '' шаблона, не могут быть эффективно ускорены * любым типом индекса и всегда будут медленными. По этой причине этот тип предложения LIKE следует избегать, если не фильтровать уже небольшое количество записей. – thomasrutter
Итак, если вы ищете точное совпадение со всей строкой, индекс FULLTEXT - это неправильная вещь? – aroth
@aroth при поиске по всему содержимому столбца полнотекстовый индекс не был бы полезен вообще, да. – Alex
Полный текстовый индекс - это индекс, который вы применяете в базе данных MySQL, к текстовым полям, на которых вы планируете полнотекстовый поиск. Полнотекстовый поиск использует синтаксис match(field) against('text')
. Если вы хотите запустить полнотекстовый поиск, у вас должен быть полный текстовый индекс в столбцах, в которых вы его используете.
Существует три типа поиска полного текста. Я процитирую инструкцию, потому что я думаю, что он говорит, что лучше:
Логическое поиск интерпретирует строку поиска, используя правила в специального языка запросов. Строка содержит слова для поиска. В нем могут также содержать операторы, которые определяют требования, так что слово должно присутствовать или отсутствовать при сопоставлении строк или что оно должно быть взвешено выше или ниже обычного. Обычные слова, такие как «some» или «then», являются стоп-словами и не совпадают, если они присутствуют в строке поиска. Модификатор MODE IN BOOLEAN определяет логический поиск . Для получения дополнительной информации см. Раздел 11.9.2, «Логический полный текст Ищет».
Поиск на естественном языке интерпретирует строку поиска как фразу « » на естественном человеческом языке (фразу « » в тексте бесплатно). Нет специальных операторов . Включен список стоп-слов . Кроме того, слова, которые являются , присутствующими в 50% или более строк, являются , которые считаются общими и не совпадают. Полнотекстовые поиски являются естественными язык ищет, если модификатор не указан .
Поисковый запрос поиска - это модификация естественного языка поиск. Строка поиска используется для выполняет поиск по естественному языку. Затем слова из наиболее релевантных строк , возвращенные поиском, добавляются к строке поиска и поискам сделано снова. Запрос возвращает строки со второго поиска. WITH QUERY Модификатор EXPANSION задает запрос поиска . Дополнительную информацию см. В разделе 11.9.3, «Полнотекстовые поисковые запросы с запросом « Расширение ».
Для получения дополнительной информации взглянуть на Full Text Search Reference Page.
- 1. Что такое `NSInvocation`? Когда его использовать?
- 2. mysql - полнотекстовый индекс - что такое естественный языковой режим
- 3. Что такое getattr() и как его использовать?
- 4. Android: Что такое ProGuard и когда мне нужно его использовать?
- 5. Что такое SchemeRegistry в apache и когда его следует использовать?
- 6. Что такое __declspec и когда мне нужно его использовать?
- 7. Что такое MvcHtmlString и когда я должен его использовать?
- 8. Что такое NSExceptionDomains и когда следует использовать его?
- 9. Что такое AppDelegate и как узнать, когда его использовать?
- 10. Что такое IDE и как его использовать?
- 11. Что такое ButtonBarLayout и как его использовать?
- 12. Что такое phpmd и как его использовать?
- 13. Что такое DSL и где его использовать?
- 14. Что такое EGL и как его использовать
- 15. Что такое JSR и как его использовать?
- 16. Что такое pyximport и как его использовать?
- 17. Что такое DecimalFormat и как его использовать?
- 18. Что такое JAXB и зачем использовать его?
- 19. Что такое msgcat и как его использовать
- 20. Что такое @private? И как его использовать?
- 21. Что такое DynamicClassAttribute и как его использовать?
- 22. Что такое закрытие и зачем его использовать?
- 23. Что такое virtualenv, и зачем его использовать?
- 24. Что такое додзё и как его использовать в asp.net? и когда мы должны его использовать?
- 25. Полнотекстовый индекс и скорость поиска
- 26. Что такое использование NSLocalizedString и когда использовать?
- 27. Что такое отражение и что его можно использовать для C#?
- 28. Автоматически проверять полнотекстовый индекс, а если его нет, создайте его?
- 29. Как перестроить полнотекстовый индекс?
- 30. Что такое я в ObjC? Когда я должен его использовать?
Пожалуйста, перефразируйте свой вопрос. Что вы хотите узнать? Что вы подразумеваете под «когда использовать полнотекстовый индекс» - помимо очевидного ответа «когда вы планируете полнотекстовый поиск»? –