Что лучший способ состоит в том, чтобы искать базу данных MySQL с PHP?

В вашем chat.ejs вы можете представить пользователя как объект JavaScript:

 <script>
  var user = <%- JSON.stringify(user) %>;
</script>

, тогда вы можете получить к нему доступ как user из своего кода.

14
задан Philip Morton 30 September 2008 в 08:41
поделиться

5 ответов

Да, самый эффективный путь обычно ищет в базе данных. Чтобы сделать это, у Вас есть три альтернативы:

  • КАК, ILIKE для соответствия точным подстрокам
  • RLIKE для соответствия индексам POSIX regexes
  • FULLTEXT для соответствия еще трем различным видам поиска, нацеленного на обработку естественного языка

, Таким образом, это зависит от того, что будет Вы на самом деле искать для решения то, что было бы лучшее быть. Для книжных заголовков я предложил бы ПОДОБНЫЙ поиск точного совпадения подстроки, полезного, когда люди знают книгу, они ищут и также ПОЛНОТЕКСТОВЫЙ ПОИСК, чтобы помочь найти заголовки подобными слову или фразе. Я дал бы им различные имена в интерфейсе, конечно, вероятно, что-то как точный для подстроки ищет и подобный полнотекстовый поиск.

пример о fulltext: http://www.onlamp.com/pub/a/onlamp/2003/06/26/fulltext.html

21
ответ дан 1 December 2019 в 07:28
поделиться

Пример кода Paul Dixon объясняет основную идею хорошо для ПОДОБНОГО подхода.

я просто добавлю эту идею удобства использования: Обеспечьте (И | ИЛИ) набор переключателя в интерфейсе, значении по умолчанию к И, затем если результаты запроса пользователя в нулевых (0) соответствиях и содержат по крайней мере два слова, отвечают опцией к эффекту:

"Извините, Никакие соответствия не были найдены для Вашей поисковой фразы. Развернуть поиск для соответствия на КАКОМ-ЛИБО слове во фразе?

, Возможно, существует лучший путь к слову это, но основная идея состоит в том, чтобы вести человека к другому запросу (, который может быть успешен ) без пользователя, имеющего необходимость думать с точки зрения Булевой логики И и ORs.

1
ответ дан 1 December 2019 в 07:28
поделиться

Вот простой способ, которым можно разбить некоторые ключевые слова для создания некоторых пунктов для фильтрации столбца на тех ключевых словах, или ANDed или ORed вместе.

$terms=explode(',', $_GET['keywords']);
$clauses=array();
foreach($terms as $term)
{
    //remove any chars you don't want to be searching - adjust to suit
    //your requirements
    $clean=trim(preg_replace('/[^a-z0-9]/i', '', $term));   
    if (!empty($clean))
    {
         //note use of mysql_escape_string - while not strictly required
         //in this example due to the preg_replace earlier, it's good
         //practice to sanitize your DB inputs in case you modify that
         //filter...
         $clauses[]="title like '%".mysql_escape_string($clean)."%'";
    }
}

if (!empty($clauses))
{   
    //concatenate the clauses together with AND or OR, depending on
    //your requirements
    $filter='('.implode(' AND ', $clauses).')';

    //build and execute the required SQL
    $sql="select * from foo where $filter";
}
else
{
    //no search term, do something else, find everything?
}
10
ответ дан 1 December 2019 в 07:28
поделиться

Рассмотрите использование сфинкс . Это - полнотекстовая система с открытым исходным кодом, которая может использовать Вашу mysql базу данных непосредственно. Это намного более масштабируемо и гибко, чем рука, кодирующая операторы LIKE (и намного менее восприимчивый к Внедрению SQL)

2
ответ дан 1 December 2019 в 07:28
поделиться

Можно также проверить функции soundex (soundex, походит) в mysql руководстве http://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_soundex Ее функциональное для возврата этих соответствий если, например, строгая проверка (ПОДОБНЫМ или =) не возвратил результатов.

1
ответ дан 1 December 2019 в 07:28
поделиться
Другие вопросы по тегам:

Похожие вопросы: