假設用戶輸入「老式奧迪車」作爲搜索條件Sql Server的多詞搜索和排名結果
我的表中有一個字段「描述」爲varchar(最大)
我要搜索用戶輸入值爲Vintage或Audi OR Car。結果應顯示包含頂部「描述」中的所有三個單詞的行和任意兩個單詞的行,然後包含任意一個單詞的行。
讓我知道這是如何實現的。
我願意使用全文搜索。
假設用戶輸入「老式奧迪車」作爲搜索條件Sql Server的多詞搜索和排名結果
我的表中有一個字段「描述」爲varchar(最大)
我要搜索用戶輸入值爲Vintage或Audi OR Car。結果應顯示包含頂部「描述」中的所有三個單詞的行和任意兩個單詞的行,然後包含任意一個單詞的行。
讓我知道這是如何實現的。
我願意使用全文搜索。
這應該使用帶有命令CONTAINSTABLE全文搜索成爲可能:
SELECT * FROM Car
INNER JOIN CONTAINSTABLE(Car, Description, 'ISABOUT (Vintage weight (.5), Audi weight (0.5), Car weight (0.5))') AS A
ON Car.Id = A.[KEY]
ORDER BY A.[RANK] DESC;
秩由重量來計算,所以與描述行「復古奧迪」會比該行較高的排名與「奧迪」的描述。
即使我有同樣的問題,我解決它使用MyISAM引擎
改變表租車
ALTER TABLE Car ENGINE = MYISAM;
然後
select * FROM Car WHERE MATCH (Description) AGAINST ('Vintage Audi Car' IN BOOLEAN MODE);
不熟悉FTS,你真的有多個查詢聯合(不是'ALL'ed)在一起。我假設用FTS,你可以寫3查詢,復古和奧迪和汽車,其次是復古和奧迪+復古和汽車......其次是復古或奧迪或汽車 – billinkc
這將大大降低查詢的性能。我也不能認爲總是隻有三個詞在搜索標準 –