SQLite Query - нужна помощь с полнотекстовым поиском - PullRequest
3 голосов
/ 11 августа 2009

Вот что я пытаюсь сделать.

Пользователь (а): Вводит данные в два поля (описание-1) и (описание-2).

Пользователь (b) Вводит аналогичные данные в противоположных полях.

Пользователь (a) или (b) поиск по обоим полям найдет совпадение.

Хорошей аналогией будет поиск по знакомствам. Пользователь (a) вводит описание себя и соответствия, которое он ищет, а Пользователь (b) вводит описание себя и соответствия, которое они ищут, и оба смогут выполнить поиск и найти соответствие.

Так что в psuedo query english ...

Выберите имя из данных, где me = 'target' и target = 'me'

Подвох будет в том, что некоторые слова в поле будут совпадать, но не все.

1 Ответ

5 голосов
/ 11 августа 2009

Этот тип сопоставления сложен независимо от технологии. Возможно, вы откусили больше, чем можете прожевать.

Я рекомендую вам прочитать типы данных Text Search в PostgreSQL.
PostgreSQL предлагает гибкое и мощное решение для полнотекстового поиска, и оно может делать то, что вам нужно, тогда как SQLite, вероятно, не будет.

Используя PostgreSQL tsquery и tsvector типы данных , вы можете превратить описание одного пользователя в форму, которая запрашивает описание другого пользователя. И tsquery, и tsvector могут быть сгенерированы динамически или сохранены в столбцах базы данных и проиндексированы.

Если вам все еще нужно использовать SQLite, вам нужно узнать о различных типах виртуальных таблиц FTS . Все они экспериментальные и по умолчанию не включены. Поэтому вам нужно перекомпилировать SQLite, включив FTS1, FTS2 или FTS3.

Документация по этим функциям довольно скудна. Вот все, что я нашел:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...