Полнотекстовый поиск из базы данных - PullRequest
0 голосов
/ 09 сентября 2010

Предположим, у меня есть база данных MySQL с именем DB и таблица с именем ContactInfo.Ниже приводится его структура и некоторые примеры данных (только один элемент):

Таблица ---- ContactInfo:


-----------------------------------------------------------
name  fullname                                       phone
-----------------------------------------------------------
NASA  National Aeronautics and Space Administration  00000
-----------------------------------------------------------

Теперь я хочу выполнить поиск данныхпод таблицей «Контактная информация», используя следующий способ:

1) Независимо от того, я ввожу «НАСА» или «Национальное управление по аэронавтике и исследованию космического пространства» или номер телефона, правильную линию (в этом примере, только первый) должен быть возвращен мнев базе данных, но первая строка должна быть возвращена мне, поскольку содержимое первой строки связано с запрошенной строкой.

Способ два можно рассматривать как неясный поиск.

Я решил использовать «полный контекстный поиск», такой как «Hpyer estraier» и «Lucene».Однако я обнаружил, что мое требование более или менее отличается.

При использовании «Hyper estraier» или «Lucene» индексы сначала должны быть построены в соответствии с разобранным простым текстом.Затем начните поиск.

Значит ли это, что я должен изменить данные в моей базе данных на несколько простых текстовых файлов (каждая запись в таблице на один файл), а затем построить индекс в соответствии с этими файлами?

Кстати, я только что обнаружил, что MySQL поддерживает полнотекстовый поиск, однако мы должны обрабатывать некоторые китайские иероглифы, но похоже, что mysql прекрасно поддерживает полнотекстовый поиск китайских символов.

Итак,Кто-нибудь может дать мне предложение?

Ответы [ 2 ]

0 голосов
/ 09 сентября 2010

Вы можете использовать sphinx в сочетании с mysql.sphinx является автономным инструментом, но у него есть режим прокси-сервера mysql, в котором он в основном ведет себя как сервер mysql и может запрашиваться любым соединителем mysql.Или, в качестве альтернативы, есть плагин механизма хранения sphinx для mysql, который позволяет запрашивать sphinx с вашим текущим подключением к mysql и выполнять соединения с другими таблицами.далее посмотри: http://sphinxsearch.com/

0 голосов
/ 09 сентября 2010

Вы можете использовать что-то подобное для этой цели:

SELECT *
  FROM `ContactInfo`
 WHERE `name` LIKE '%your-query%'
    OR `fullname` LIKE '%your-query%'
    OR `phone` LIKE '%your-query%'

Для поддержки вашего случая # 2 вам необходимо заменить все пробелы в your-query на % -символы, чтобы разрешить любую комбинацию символов между введенными словами. Не забудьте экранировать пользовательский ввод для предотвращения внедрения SQL.

И размещение всех ваших данных в (отдельных) текстовых файлах, по-видимому, неэффективно для хранения данных.

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