2011-11-01 41 views
5

Sử dụng Sql Server 2008 làm cách nào bạn có thể tìm thấy kết hợp chuỗi chính xác bằng tìm kiếm toàn văn. Tôi đang có một thời gian khó khăn thực sự với điều này và tôi chỉ không thể tìm thấy một giải pháp thỏa đáng ở bất cứ nơi nào trực tuyến.Tìm đối sánh chính xác bằng tìm kiếm toàn văn

Ví dụ: nếu tôi đang tìm kiếm chuỗi "Bojan Skrchevski", tôi muốn kết quả đầu tiên chính xác như vậy.

Cho đến giờ tôi đã thử định dạng chuỗi như: "Bojan * NEAR Skrchevski *" và gọi CONTAINSTABLE để nhận kết quả, nhưng chuỗi này được định dạng để trả về nhiều kết quả hơn như Bojana và Bojananana v.v. RANK, nhưng vẫn không thành công.

Hơn nữa, trong chuỗi của tôi, tôi có một chuỗi số như: "3 1 7", nhưng với định dạng hiện tại nó cũng trả về "7 1 3" vv

Ví dụ:

DECLARE @var varchar(4000); 
SET @var = '"Oxford*" NEAR 24 NEAR 7 NEAR 5 NEAR "London*"' 
SELECT [Key] FROM CONTAINSTABLE(dbo.[MyTable], [MyField], @var); 

Tôi muốn có thể có được thứ tự chính xác. Không nhận được "Oxford 7 24 5 London" như một kết quả.

Làm cách nào để định dạng chuỗi để thực hiện điều này một cách chính xác?

Trả lời

0

Có lẽ một cách tiếp cận có thể chọn một vài kết quả với việc tìm kiếm toàn văn và sau đó SELECT một cụ thể từ những kết quả đó. Nhưng có lẽ có một giải pháp tốt hơn cho việc này.

Tôi đã thử cách tiếp cận này và nó thực sự hoạt động. Nó cũng hoạt động nhanh hơn rất nhiều chỉ sau SELECT giá trị.

1

Có 2 lựa chọn

1) này sẽ nhận được tất cả các mục trong đó có núi trong tên của họ

SELECT Name, ListPrice 
FROM Production.Product 
WHERE ListPrice = 80.99 
    AND CONTAINS(Name, 'Mountain'); 
GO 

2) này sẽ nhận được tất cả các mục trong đó có những 3 dây tại văn bản không có vấn đề gì đặt hàng

SELECT Title 
FROM Production.Document 
WHERE FREETEXT (Document, 'vital safety components'); 

Tùy thuộc vào những gì bạn thực sự muốn nhưng tôi không thể hiểu hoàn toàn.

Nếu tôi thiếu điểm, vui lòng gửi mẫu và kết quả sẽ là gì.

kr,

Kristof

+0

@Kristoff - ví dụ: nếu tôi tìm kiếm chuỗi như sau: "Oxford 24 3 6 London" và nếu có "Oxford 3 24 6 London" thì điều này cũng sẽ được trả lại. Tôi chỉ muốn khớp chính xác theo thứ tự chính xác. – TheBoyan

+0

Để tham khảo, đây là nơi các ví dụ được tìm thấy từ: http://msdn.microsoft.com/en-us/library/ms142583.aspx – Mike

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