2012-12-26 39 views
8

Hướng dẫn dành cho nhà phát triển Android dường như thích FTS3 trong SQLite DB khi tìm kiếm là cần thiết. Tôi đọc mô tả FTS3 và nó xuất hiện rằng nó tạo ra một bảng ảo thay vì một bảng vĩnh viễn. Sự khác biệt giữa bảng ảo (FTS3) và bảng bình thường trong SQLite là gì? Là bảng ảo vĩnh viễn và vẫn còn trong cơ sở dữ liệu ngay cả sau khi tôi thoát khỏi ứng dụng? Cảm ơn bạn.Bảng bình thường so với bảng ảo SQLite DB

Trả lời

5

Một bảng ảo cho phép công cụ SQLite truy cập vào nội dung của kho dữ liệu, sử dụng mã (thường) không phải SQLite. Điều này cho phép nhà phát triển thêm chức năng tùy chỉnh vào SQLite.

Trong trường hợp FTS, ban đầu nó không phải là một phần của công cụ SQLite. Đó là mã bên ngoài SQLite, cho phép người dùng cuối thực hiện tìm kiếm toàn văn bản trên dữ liệu.

Bảng ảo có vĩnh viễn không? Điều đó phụ thuộc vào việc triển khai. Đối với FTS, dữ liệu là vĩnh viễn. Tuy nhiên, bạn có thể tạo một triển khai sử dụng RAM để lưu trữ - điều này rõ ràng sẽ biến mất khi ứng dụng bị chấm dứt.

thêm về bảng ảo: http://www.sqlite.org/vtab.html

0

Tôi nghĩ đó là chính xác hơn để nói rằng hướng dẫn API cho việc tạo ra một giao diện tìm kiếm ghi chú rằng FTS3 không tìm kiếm văn bản đầy đủ nhanh hơn nhiều so LIKE, tùy thuộc vào các đặc tính của tìm kiếm. Ví dụ, một truy vấn SQLite thông thường sử dụng LIKE cho phép ký tự đại diện, trong khi truy vấn FTS3 bằng MATCH thì không. Nếu bạn muốn tìm kiếm các thẻ, bạn có thể muốn đi với FTS3. Nếu bạn đang thực hiện trận đấu không chính xác, bạn chắc chắn phải đi với LIKE.

+0

Tôi nghĩ rằng ký tự đại diện được phép khi sử dụng MATCH. Bạn chỉ cần đặt * dựa trên những gì tôi đọc trên trang web SQLite. – androidnerd

Các vấn đề liên quan