Поиск описания XML-канала по ключевому слову из базы данных

Я работаю над проектом, в котором я использую XML-каналы для ввода. Мне нужно отфильтровать элементы, название и описание которых соответствует определенным ключевым словам. Если элемент содержит в названии или описании смартфон, я должен добавить этот элемент в базу данных в категорию «Смартфон».

Я использую здесь следующий запрос: $title = $item=>title; $desc = $item->описание; SELECT cid FROM tbl_keyword WHERE MATCH(keyword) AGAINST ('".$title." ".$desc."' В БУЛЕВОМ РЕЖИМЕ);

Запрос возвращает значение, но он получает другие строки из базы данных, такие как умные часы, умные игрушки.

Я хочу знать, как включить космический поиск. Запрос должен точно соответствовать ключевому слову.

таблица выглядит так

id cid ключевое слово
1 6 смартфон
2 6 iphone
3 7 смарт часы

Когда я получаю заголовок «Смартфоны не нужны», запрос должен возвращать только cid 6.

Как это реализовать.?


person Nagarajan    schedule 28.01.2014    source источник


Ответы (1)


Насколько я знаю, вы не можете просто выполнить поиск всего предложения (смартфоны не обязательны) в базе данных, чтобы получить точный результат.

Два способа сделать это:

1.*(рекомендуется)*Вы можете просто разбить предложение пробелом ("Smart", "Phone", "are", "not", "basic"), а затем применить следующий запрос

выберите * из tbl_keyword, где ключевое слово, например, "%smart%", или ключевое слово, например, "%phones%", или ключевое слово, например, "%are%", или ключевое слово, например, "%not%", или ключевое слово, например, "%essential%"

Этот запрос выведет список возможных записей из базы данных. Из этого вам нужно будет сравнить результат с вашим предложением запроса, используя ваш язык программирования.


2. Таким образом, запись будет выводиться непосредственно из базы данных (но в худшем случае это может исключить некоторые важные записи).

Разбейте предложение на одно слово, подобное этому («Умные», «Телефоны», «являются», «нет», «необходимые»)

А затем разбейте это предложение двумя такими словами («Смартфоны», «Телефоны», «Не являются», «Несущественны», «Смарт необходим», «Смарт есть», «Смарт не», «Телефон не». )

И используйте оба из них для извлечения записей из базы данных (этот процесс просто сузит фильтр)

выберите * из tbl_keyword, где (ключевое слово, например, "%smart%", или ключевое слово, например, "%phone%", или ключевое слово, например, "%are%", или ключевое слово, например, "%not%", или ключевое слово, например, "%essential%") и (ключевое слово, например, "%смартфоны%", или ключевое слово, например, "%телефоны%", или ключевое слово, например, "%не являются%", или ключевое слово, например, "%не предметы первой необходимости", или ключевое слово, например, "%необходимые устройства%")

Надеюсь, что это поможет вам ...

person Praveenfith    schedule 28.01.2014
comment
Я реализую, как вы упомянули\ - person Nagarajan; 28.01.2014