Интеллектуальный анализ пользовательских поисковых запросов в PHP - PullRequest
1 голос
/ 05 октября 2010

Я нахожусь в процессе создания службы поиска для моего веб-сайта PHP, и мне было интересно, как другие пошли на интеллектуальный анализ поисковых терминов на основе кавычек (и, возможно, других символов в будущем).

Другими словами, поисковый термин молоток для отвертки может дать массив ['отвертка', 'молоток]], но "молоток с плоской головкой" может дать[«отвертка с плоской головкой», «молоток»].

Я знаю, что могу выполнить это неаккуратным циклом, но я уверен, что в PHP есть что-то встроенное для этого.

Ответы [ 2 ]

1 голос
/ 05 октября 2010

Попробуйте использовать preg_split

Что-то вроде:

/* $search_term:
*  "flathead screwdriver" hammer -nails
*/

$terms = preg_split("/[\s]*\\\"([^\\\"]+)\\\"[\s]*|[\s]+/", $search_term);

/* $terms = array(
*      0    =>    "flathead screwdriver"
*      1    =>    "hammer"
*      2    =>    "-nails"
*/

$exclude = array();

foreach($terms as $term){
    if(strpos($term, '-') == 0)
        array_push($exclude, substr($term, 1));
}

/* $exclude = array(
*      0    =>    "nails"
*/

Единственное, что я не включил, это удаление "гвоздей" из массива $ term. Я оставлю это как упражнение для читателя =)

0 голосов
/ 06 октября 2010

Я использовал strtok согласно этому Предыдущее сообщение

...