Поисковый запрос "Чужой против хищника" - PullRequest
3 голосов
/ 28 сентября 2010

Как сделать так, чтобы при поиске «чужой против хищника» вы также получали результаты со строкой «чужой против хищника» с примером «S»
http://www.torrentz.com/search?q=alien+vs+predator
как они реализовали это?
это продвинутая поисковая система?

Ответы [ 6 ]

7 голосов
/ 28 сентября 2010

Это известно как Word Stemming . Когда текст проиндексирован, слова «связаны» со своими «корнями». Таким образом, борьба становится борьбой, катание на лыжах становится лыжей, бегом становится бегом и т. Д. То же самое делается с текстом, который вводит пользователь во время поиска, поэтому при сравнении условий поиска со значениями в индексе они совпадают. *

Проект Lucene поддерживает это. Я не считаю это расширенной функцией. Особенно с учетом ожиданий Google.

4 голосов
/ 28 сентября 2010

Проверка на множественное число является формой стемминга. Stemming - общая черта поисковых систем и других текстовых соответствий. См. Страницу википедии: http://en.wikipedia.org/wiki/Stemming для множества алгоритмов, чтобы выполнить stemming.

3 голосов
/ 28 сентября 2010

Когда слова индексируются, они индексируются корневой формой.Например, для «инопланетян», «инопланетянин», «чужой», «инопланетянин» все хранятся как «инопланетянин».

И когда слова являются поисковыми, поисковая система также ищет только корневую форму «чужой».

Это часто называют алгоритмом Портера.Вы можете скачать его реализацию для вашего любимого языка здесь - http://tartarus.org/~martin/PorterStemmer/

3 голосов
/ 28 сентября 2010

Обычно, когда вы настраиваете поисковую систему для поиска текста, вы создаете запрос, подобный следующему:

SELECT * FROM TBLMOVIES WHERE NAME LIKE '%ALIEN%'

Это означает, что подстрока ALIEN может появляться в любом месте NAMEполе, так что вы получите обратно строки, как ALIENS.

1 голос
/ 28 сентября 2010

Вы можете попробовать использовать soundex () в качестве нечеткого совпадения для ваших строк. Если вы сохраните soundex с заголовком, то сравните этот индекс с подстрокой, используя LIKE 'XXX%', и вы получите достойное совпадение. Чем выше число подстрок, тем ближе они будут совпадать.

см. Документы: http://dev.mysql.com/doc/refman/5.1/en/string-functions.html#function_soundex

1 голос
/ 28 сентября 2010

Это базовая функция поиска engine , а не просто программа, которая сопоставляет ваш запрос с набором заранее определенных результатов.

Если у вас есть время, this - отличная статья о различных алгоритмах и о том, как они реализованы.

...