В вашем chat.ejs
вы можете представить пользователя как объект JavaScript:
<script>
var user = <%- JSON.stringify(user) %>;
</script>
, тогда вы можете получить к нему доступ как user
из своего кода.
Да, самый эффективный путь обычно ищет в базе данных. Чтобы сделать это, у Вас есть три альтернативы:
, Таким образом, это зависит от того, что будет Вы на самом деле искать для решения то, что было бы лучшее быть. Для книжных заголовков я предложил бы ПОДОБНЫЙ поиск точного совпадения подстроки, полезного, когда люди знают книгу, они ищут и также ПОЛНОТЕКСТОВЫЙ ПОИСК, чтобы помочь найти заголовки подобными слову или фразе. Я дал бы им различные имена в интерфейсе, конечно, вероятно, что-то как точный для подстроки ищет и подобный полнотекстовый поиск.
пример о fulltext: http://www.onlamp.com/pub/a/onlamp/2003/06/26/fulltext.html
Пример кода Paul Dixon объясняет основную идею хорошо для ПОДОБНОГО подхода.
я просто добавлю эту идею удобства использования: Обеспечьте (И | ИЛИ) набор переключателя в интерфейсе, значении по умолчанию к И, затем если результаты запроса пользователя в нулевых (0) соответствиях и содержат по крайней мере два слова, отвечают опцией к эффекту:
"Извините, Никакие соответствия не были найдены для Вашей поисковой фразы. Развернуть поиск для соответствия на КАКОМ-ЛИБО слове во фразе?
, Возможно, существует лучший путь к слову это, но основная идея состоит в том, чтобы вести человека к другому запросу (, который может быть успешен ) без пользователя, имеющего необходимость думать с точки зрения Булевой логики И и ORs.
Вот простой способ, которым можно разбить некоторые ключевые слова для создания некоторых пунктов для фильтрации столбца на тех ключевых словах, или 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?
}
Рассмотрите использование сфинкс . Это - полнотекстовая система с открытым исходным кодом, которая может использовать Вашу mysql базу данных непосредственно. Это намного более масштабируемо и гибко, чем рука, кодирующая операторы LIKE (и намного менее восприимчивый к Внедрению SQL)
Можно также проверить функции soundex (soundex, походит) в mysql руководстве http://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_soundex Ее функциональное для возврата этих соответствий если, например, строгая проверка (ПОДОБНЫМ или =) не возвратил результатов.