Поиск CakePHP по релевантности

Я разрабатываю сайт вакансий, где я хочу искать объявления о вакансиях по релевантности, у меня есть такие поля, как название должности, например, job_text. теперь предположим, что человек ищет cakephp, я хотел бы сначала получить результаты для cakephp, а затем, после того, как они скажут php, который также соответствует, но cakephp, очевидно, является наиболее релевантным. как я могу это сделать?


person louis_coetzee    schedule 08.01.2013    source источник
comment
Если человек ищет конкретно cakephp, как будет соответствовать php? Просто отрезать части от слов не имеет никакого смысла. С такой логикой поиск automobile также вернет результаты мобильного телефона. Вы не имеете в виду наоборот?   -  person Oldskool    schedule 09.01.2013
comment
скажем, я ввожу поиск php, он выдаст результаты для объявлений о вакансиях с заголовком php и php где-то в теле, это будет наиболее актуально, если вакансии с php в теле, но не в заголовке, где плитка может если бы вы были веб-разработчиком, этот результат был бы менее релевантным, если бы слово php само по себе не присутствовало в 3-м объявлении о вакансии, скажем, оно содержит только cakephp, это было бы наименее релевантным. Извините за путаницу и неправильный пример в первый раз.   -  person louis_coetzee    schedule 10.01.2013


Ответы (3)


Мое предложение состоит в том, что вы должны выполнить несколько запросов для целей сортировки.

Например, сначала вы находите задания, в которых заголовок скажем php, используя order by title desc, затем запускаете запрос, чтобы найти задания, где «php» появляется в ключевых словах для заданий, и, наконец, вы можете запустить запрос, чтобы найти задания, в описании которых есть слово «php». в этом.

Затем вы можете объединить результаты для этих запросов.

person cartina    schedule 10.01.2013

Лучший способ сделать то, что я пытался сделать на этом этапе, — это интегрироваться с apache solr или какой-либо подобной поисковой системой.

person louis_coetzee    schedule 17.09.2014

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

person floriank    schedule 09.01.2013