Хорошо, ребята, работающие над поисковыми предложениями с помощью jQuery-UI AutoComplete с результатами из sql-sever 2008 db.Использование таблицы продуктов AdventureWorks DB для тестирования.Я хочу искать по 2 полям в этом примере.ProductNumber и Name.
Ранее я задавал 2 вопроса, касающихся этого ... здесь и здесь
, и я до сих пор придумал это...
CREATE procedure [dbo].[procProductAutoComplete]
(
@searchString nvarchar(100)
)
as
begin
declare @param nvarchar(100);
set @param = LOWER(@searchString);
WITH Results(result)
AS
(
select TOP 10 Name as 'result'
from Production.Product
where LOWER(Name) like '%' + @param + '%' or (0 <= dbo.lvn(@param, LOWER (Name), 6))
union
select TOP 10 ProductNumber as 'result'
from Production.Product
where LOWER(ProductNumber) like '%' + @param + '%' or (0 <= dbo.lvn(@param, LOWER(ProductNumber), 6))
)
SELECT TOP 20 * from Results
end;
Теперь моя проблема - упорядочение результатов ... Я получаю правильные результаты, но они просто упорядочены по имени или номеру продукта и не относятся к входной строке ...
например, я могу искать номер продукта, начинающийся с "BZ-", а верхние возвращаемые результаты - ProductNums, начинающиеся с "A", хотя я получаю более релевантные результаты в других местах списка ..
какие-либо идеи для сортировки результатов с точки зрения релевантности для строки поиска ??
РЕДАКТИРОВАТЬ:
в отношении tql реализации найденного расстояния Левенштейна здесь (связано с предыдущим вопросом) ...
Мне интересно, как лучше определить значение MAX для отправки в функцию (6 в моем примере выше)
Будет ли этолучше всего выбрать произвольное значениена основании того, что «кажется» хорошо работает для моего данного набора данных?или было бы лучше настроить его динамически в зависимости от длины входной строки ...
Вначале я считал, что значение должно быть неоправданно пропорционально длине searchString ... так какстрока поиска растет и становится более конкретной .. терпимость уменьшается ... мысли ??