Вы также можете рассмотреть Sphinx или Lucene для полного текста, например, поиска по полнотекстовому полю mysql. Я не использовал их лично, но я слышал, что оба они превосходят mysql в полнотекстовых индексах.
Следует отметить, что все эти методы требуют специального обновления для обновления, что добавляет дополнительные расходы на обслуживание и сервер.
Хорошая статья на сфинксе: http://astellar.com/2011/12/replacing-mysql-full-text-search-with-sphinx/
бесплатного решения для технического обслуживания, что делает хорошо для названия продукта или номеров просто расколоть пользователь условие поиска пробелов и добавить LIKE «термина%%» для каждого к вашему запросу ,
Кроме того, я создаю специальное поле поиска, которое является именем или номером продукта, с его жетонами в алфавитном порядке и пробелами и символами. Вы должны обновлять это поле каждый раз, когда имя продукта изменяется. Затем в дополнение к запросам к исходному полю I OR
поиск против этого нового разделенного поля. Пример, если у вас есть имя продукта, например «cat 3306 longblock», затем создайте поле product_name_search и поместите «3306catlongblock». Когда пользователь ищет 3306 long-block
Вы обрабатываете поиск по вскрышным символам и расщеплению на пространствах:
WHERE (other product name search clauses) OR
(product_name_search LIKE '%3306%' AND product_name_search LIKE '%longblock%')
Этот процесс не так хорошо, как FREETEXT но он делает достаточно хорошо для названия продуктов и номеров.
Спасибо, Тим. Специальное поле поиска может работать.Самая большая проблема заключается в том, что мы ищем «3306 longblock», когда продукт называется «Cat 3306 Long Block». Обратите внимание на недостаток места в поисковом запросе. –
вам нужно разбить поиск '3306 longblock' на ... LIKE '% 3306%' AND ... LIKE '% longblock%' против обработанного поля product_name_search –
Это сработало, спасибо Tim. –