2013-06-05 2 views
0

Я пытаюсь получить данные из таблицы, используя колонку, содержащую часть строкиMatch строки в MySQL

Таблица search_data:

id  data 

1  news 
2  today  
3  latest 

, когда я использовать ключевое слово «новости»

select * from search_data where data like '%news%' 

извлекается. но когда я использую ключевые слова «последние новости»

select * from search_data where data like '%latest news%' 

не работает, показывая пустой набор результатов.

Может кто-нибудь помочь мне с запросом.

Спасибо.

ответ

0

Это потому, что вы ищете полную новость последних строк с текстом с каждой стороны. Вам нужно будет сделать where data like '%news%' or data like '%latest%' для достижения поиска для обоих ключевых слов, где они не содержатся в той же строке

+0

это так: пользователь вводит ключевые слова, он может ввести один или несколько примеров ключевых слов: «последние новости сегодня» или «последние новости сегодня» в США ', поэтому количество ключевых слов не ограничено. поэтому я должен искать соответственно. – chaithanya

+0

@ Ответ Стефана - это то, что я буду использовать на основе вашего требования. –

1

Вы можете добавить FULLTEXT индекс, так что вы можете использовать MATCH AGAINST:

select 
    * 
from 
    search_data 
where 
    match(data) against ('latest news' IN BOOLEAN MODE) 

Это будет наиболее эффективный способ, вы можете прочитать больше here

0

Я не знаю, что вы имеете в виду, но я предполагаю, что вы хотите сделать что-то Лик этого выберите * из search_data, где данные как «% последней%» или данные, как «% новостей % '

+0

это так: пользователь вводит ключевые слова, он может ввести один или несколько примеров ключевых слов: «последние новости сегодня» или «последние новости сегодня в США», ключевые слова счет не ограничен. поэтому я должен искать соответственно – chaithanya

+0

oh, если это так, вы можете взорвать то, что пользователь вставляет, а затем сделать запрос самостоятельно. Я не знаю, на каком языке вы используете. В PHP мы можем сделать что-то вроде this.use function exploer ($ userinput), тогда вы получите массив, тогда вы можете foreach() сделать SQL.but для этого, я действительно не думаю, что использование sql для запроса уже неплохо. Я подумаю: SOLR to к этому, я думаю, это будет намного быстрее, если у вас есть огромные данные. – Dean

0

выберите * from search_data, где данные, такие как «% последние новости%» в этом запросе, вы указываете последние новости, что означает, что результат должен содержать «последние новости» в строке, так как в вашем наборе данных нет ни того, ни другого, вы можете использовать оператор «или» и «и» в вашем запросе

Смежные вопросы