У меня есть строка ключевых слов для поиска в формате: A, B + C, D + E, B + F, E + G + H ,. ..
Каждая буква представляет собой ключевое слово, а значение + - для тех случаев, когда я хочу, чтобы все ключевые слова отображались.
Гарантированный запрос к ключевым словам.
позже я буду искать БД для имен, содержащих эти ключевые слова.
Так после моего примера я будет интересно в именах, которые содержат:
А или (В и С) или (D и Е) или (В и F) или (Е и G и Н) и т.д.php-алгоритм для создания списка ключевых слов из строки ключевых слов
Проблема в том, что я могу запросить только DB для имен, содержащих одно ключевое слово (это API, а не мой БД), поэтому мне нужно составить список ключевых слов для извлечения имен, а затем проверить каждое имя, чтобы увидеть, содержит все релевантные ключевые слова.
Мне нужен алгоритм для синтаксического анализа строки и создания списка ключевых слов, которые минимизируют запросы к БД.
Например, в моем примере, я хотел бы получить имена:
A
B и проверить, если они также содержат C или F
E и проверить, если они также содержат D или (G и H)
поэтому алгоритм должен создать список ключевых слов A, B, E для запроса, а также добавить к каждому из них ключевые слова, которые должны появиться в имени.
Я работаю в php, поэтому предпочитаю ответы в php, но псевдокод также будет хорошо. Я надеюсь, что это понятно ...
Ввод строки, поэтому мне нужно сначала создать массив A, каким образом? Кроме того, мне нужно получить не только список ключевых слов для запроса, но и ключевые слова, с которыми они должны появиться. –
Вход «A, B + C, D + E, B + F, E + G + H», не так ли? взорвать его на массив невозможно? Алгоритм дает вам ** приоритет запросов **. Конечно, после каждого запроса вам нужно передать массив и проверить, есть ли у вас TRUE-соединение. и выясните соединение FALSE. – MeNa
ваш алгоритм дает приоритет каждому слову, но в конце мне нужно только запросить некоторые из них, например, мне не нужно будет запрашивать D или G, так как они проверяются только с помощью E ... во всяком случае, я думаю, что я Я предположил, что я делаю такой массив приоритетов, как вы предлагали, но затем я снова повторяю ключевые слова и создаю массив запросов, сохраняя ключевые слова с максимальным приоритетом в качестве ключевых слов для запроса и присваивания им всех других связанных с ними ключевых слов. Спасибо, в любом случае. –