Нет полнотекстовой поддержки; должен иметь эффективную поисковую систему MySQL DB; где найти один? - PullRequest
1 голос
/ 20 декабря 2009

Я задал несколько вопросов о Zend и его функциях поиска. Теперь, после прочтения, я заметил, что для этого требуются индексы FULL-TEXT в полях MySQL. Мой поставщик веб-хостинга не позволяет мне что-либо менять в файле my.ini (my.cnf), который содержит информацию о минимальной длине слова для поиска в полнотекстовых индексах и многое другое. Поэтому я не могу использовать FULL-TEXT, если нет другого способа настройки конфигурации, чем изменение в этом файле. Примерами изменений являются ft_min_word_len, который по умолчанию 4, я думаю.

У меня есть таблица с 400 000 записей, и мне нужна хорошая функция поиска. Это объявления между прочим.

Должен быть способ, я просто не знаю его, поэтому я подумал, что вы, ребята, узнаете.

В первом вопросе, который я задал относительно Zend, я также упомянул, что у меня нет поддержки FULLTEXT, но люди все равно предложили Zend.

Может кто-нибудь дать мне хорошее объяснение того, что я должен делать в моей ситуации? ПРИМЕЧАНИЕ : мой веб-сайт основан на PHP!

PS : «LIKE» не хватит в поисках, которые мне нужно сделать. Это должно быть довольно продвинутым. Если вам нужны подробности о том, из чего он должен состоять, проверьте мой предыдущий вопрос: Какую стороннюю поисковую систему (бесплатно) мне следует использовать?

Спасибо

ОБНОВЛЕНИЕ: В двух статьях говорится, что Zend "выполняет полнотекстовый поиск". Что они подразумевают под этим? Я думаю, они означают, что мне нужны полнотекстовые индексы!?

Ответы [ 3 ]

2 голосов
/ 20 декабря 2009

Zend_Search никоим образом не требует включения полнотекстового поиска в любой базе данных. На самом деле Zend_Search полностью независим от любой базы данных, так как является реализацией поисковой системы Lucene полностью на PHP. Поэтому вы сможете настроить его так, как пожелаете.

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

EDIT
В ответ на третий комментарий: Да, это фактически база данных, но я бы не стал использовать ее как замену «истинной» базе данных, поскольку в ней нет поддержки полей и целостности данных. Вы можете использовать тип поля UnStored, чтобы он только индексировал записи, но не сохранял фактический текст, чтобы вы могли использовать его в сочетании с реляционной базой данных.

0 голосов
/ 20 декабря 2009

Использование полнотекстовых индексов в любом случае плохая идея; они не очень хороши для полезного поиска; они работают только с MyISAM; они не очень хорошо подходят для больших данных.

Lucene не использует их, равно как и любое разумное приложение на основе mysql (к сожалению, bugs.mysql.com делает)

0 голосов
/ 20 декабря 2009

Вы уверены, что Zend_Search_Lucence требует полнотекстового индекса ваших данных? Я не понимаю, почему это так - даже если я никогда не использовал это.

Этот компонент позволяет вам выполнять «полнотекстовый поиск», но это не значит, что он использует какой-либо полнотекстовый индекс из базы данных: он может реализовать свой собственный полнотекстовый механизм.
(И, по сути, это так)


Тем не менее, с такой большой базой данных (вы сказали, что у вас несколько сотен тысяч записей) , я бы, вероятно, сменил службу хостинга, получив такую, которая позволит мне делать с сервером все, что я хочу, включая изменение настройка MySQL и установка другого программного обеспечения, например Solr или Sphinx .

Может быть, это будет стоить немного больше (но выделенный сервер тоже не так уж дорог) , но, по крайней мере, вы сможете делать то, что вам нужно с вашим сервером ...

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