2009-07-29 39 views
7

Tôi có trang web liệt kê phim. Đương nhiên, mọi người mắc lỗi chính tả khi tìm kiếm phim và tất nhiên có một số phim có dấu nháy đơn, sử dụng chữ cái để đánh vần các số trong tiêu đề, v.v.Cách tốt nhất để thực hiện sửa lỗi chính tả thành tìm kiếm trong php/mysql là gì?

Làm cách nào để tập lệnh tìm kiếm bỏ qua các lỗi này ? Có lẽ cần một cái gì đó thông minh hơn một chút so với WHERE mov_title LIKE '%keyword%'.

Tôi đã sử dụng công cụ tìm kiếm toàn văn, nhưng tất cả những thứ đó trông thật phức tạp và tôi cảm thấy việc xây dựng chúng vào ứng dụng của tôi sẽ giống như địa ngục trên trái đất. Nếu tôi phải sử dụng cái nào, cái nào ít xâm lấn nhất, điều đó sẽ không đau đớn nhất để thực hiện vào mã hiện tại?

Trả lời

6

Tôi nghĩ bạn sẽ phải triển khai công cụ tìm kiếm toàn văn bên ngoài. MySQL không tốt ở tìm kiếm toàn văn. Tôi muốn nói rằng bạn nên cung cấp Lucene một lần (tutorials). Zend Framework has an API cắm vào Lucene, giúp việc học và sử dụng dễ dàng hơn.

+0

Lucene có nhận dạng lỗi đánh máy được tích hợp sẵn không? Điều gì về tìm kiếm nhân sư? –

+1

Có, Lucene hỗ trợ truy vấn tìm kiếm mờ. Thuật toán dựa trên khoảng cách Levenshtein. API Java trông như thế này: http://lucene.apache.org/java/2_2_0/api/org/apache/lucene/search/FuzzyQuery.html – PatrikAkerstrand

+0

Không có cách nào khác ngoại trừ việc sử dụng Lucene? –

0

Tôi đã không sử dụng cả php lẫn mysql, nhưng thay thế cho tìm kiếm văn bản đầy đủ có thể là soundex searches.

+0

mysql theo mặc định hỗ trợ sundex – Sethunath

1

Giả sử bạn sử dụng MySQL - MySQL không có chức năng tích hợp sẵn có khả năng thực hiện việc này.

Điều này có nghĩa là bạn sẽ phải tự mình thực hiện tìm kiếm toàn văn bản hoặc sử dụng công cụ tìm kiếm toàn văn của bên thứ ba.

  • Nếu bạn thực hiện nó cho mình, bạn nên nhìn vào metaphone hoặc double metaphone thuật toán (tôi khuyên bạn nên họ trên Soundex, đó là gần như không giỏi loại nhiệm vụ), để lưu trữ cơ quan đại diện phoenetic của tất cả các bạn từ ngữ. Tuy nhiên, xây dựng tìm kiếm văn bản đầy đủ của riêng bạn không có nhiệm vụ cho những người yếu tim. Đừng cố gắng nếu bạn không tự coi mình là một thuật sĩ cơ sở dữ liệu.
  • Nếu bạn muốn có công cụ của bên thứ ba, Lucene là cách để thực hiện. Nó được chuyển vào tấn các ngôn ngữ/nền tảng khác nhau including PHP - bạn không phải sử dụng Java.
Các vấn đề liên quan