2009-07-29 6 views
7

Mam stronę z listą filmów. Naturalnie ludzie popełniają błędy w pisowni podczas wyszukiwania filmów, i oczywiście jest to, że niektóre filmy mają apostrofy, używają liter, aby przeliterować numery w tytule, itp.Jaki jest najlepszy sposób wprowadzenia korekty literówki do wyszukiwania w php/mysql?

Skąd wziąć, że mój skrypt wyszukiwania pomija te błędy ? Prawdopodobnie potrzebujesz czegoś, co jest trochę bardziej inteligentne niż WHERE mov_title LIKE '%keyword%'.

Zasugerowano, że korzystam z wyszukiwarki pełnotekstowej, ale wszystkie te rzeczy wyglądają na bardzo skomplikowane i wydaje mi się, że dodanie ich do mojej aplikacji będzie jak diabli na ziemi. Jeśli muszę użyć jednego, to co najmniej inwazyjne, które będzie najbardziej bezbolesne do wdrożenia w istniejącym kodzie?

Odpowiedz

6

Myślę, że będziesz musiał wdrożyć zewnętrzną wyszukiwarkę pełnotekstową. MySQL po prostu nie nadaje się do wyszukiwania pełnotekstowego. Powiedziałbym, że powinieneś dać Lucene i przejść (tutorials). Zend Framework has an API, który podłącza się do Lucene, co ułatwia naukę i wykorzystanie.

+0

Czy Lucene ma wbudowane rozpoznawanie literówek? Co ze sphinxsearch? –

+1

Tak, Lucene obsługuje zapytania Fuzzy. Algorytm opiera się na odległości Levenshteina. Interfejs API języka Java wygląda następująco: http://lucene.apache.org/java/2_2_0/api/org/apache/lucene/search/FuzzyQuery.html – PatrikAkerstrand

+0

Czy nie ma innej możliwości oprócz użycia Lucene? –

0

Nie użyłem ani php, ani mysql, ale alternatywą dla wyszukiwania pełnotekstowego może być soundex searches.

+0

mysql domyślnie obsługuje sundex – Sethunath

1

Zakładając, że używasz MySQL - MySQL nie ma wbudowanej funkcji, która jest w stanie to zrobić.

Oznacza to, że będziesz musiał zaimplementować wyszukiwanie pełnotekstowe samodzielnie lub użyć narzędzia do wyszukiwania pełnotekstowego innej firmy.

  • Jeśli wdrożyć go samodzielnie, należy zajrzeć do metaphone lub double metaphone algorytmów (polecam je soundex, który nie jest tak dobry w tego typu zadania), aby zapisać phoenetic reprezentacje wszystkich swoich słowa. Jednak budowanie własnego wyszukiwania pełnotekstowego nie jest zadaniem dla osób o słabych nerwach. Nie próbuj tego, jeśli nie uważasz się za kreatora bazy danych.
  • Jeśli chcesz skorzystać z narzędzia innej firmy, Lucene jest drogą do zrobienia. Jest przeniesiony do ton różnych języków/platform including PHP - nie musisz używać Javy.
Powiązane problemy