У меня есть 3 таблицы, которые соединяются. Рестораны, кухни и кухня. Ресторан может продавать много кухни пищи (это плохо формулировка, но вы получите идею?)полнотекстовый поиск, результаты поиска по лучшим совпадениям
Так что я полные настройки текста на ресторане: Имя, CityTown, индекс и CuisineType: Имя
У меня есть один SearchBox на моей домашней странице и по мере того, как результаты пользовательских типов фильтруются для наилучшего соответствия.
Вот несколько примеров: SearchText = "Royal D Ed" Теперь в ресторане есть место для королевской династии, а город - Эдинбург. Но мой верный результат назад для чего-то, где город начинается с D, а также имя. Это не лучший матч.
Я покажу вам, что мой сохраненный proc, прототип, так что полученные имена немного хаки.
ALTER PROCEDURE [dbo].[RestaurantsFullText]
@searchText nvarchar(255)
AS
SELECT
b.*,
COALESCE(akt2.[Rank],0)/30 +
COALESCE(akt1.[Rank],0)/30 +
COALESCE(akt.[Rank],0)/30 +
COALESCE(bkt.[Rank],0) as rankCount
FROM
Restaurants b
left JOIN Cuisines c on b.Id = c.RestaurantId
left join CuisineType a
ON c.CuisineId = a.id
left JOIN
containstable(Restaurants, Name, @searchText) bkt
ON b.id = bkt.[Key]
left JOIN containstable(CuisineType, Name, @searchText) akt
ON a.id = akt.[Key]
left JOIN containstable(Restaurants, Postcode, @searchText) akt1
ON b.id = akt1.[Key]
left JOIN containstable(Restaurants, citytown, @searchText) akt2
ON b.id = akt2.[Key]
where
COALESCE(akt2.[Rank],0)/30 +
COALESCE(akt1.[Rank],0) /30 +
COALESCE(akt.[Rank],0)/30 +
COALESCE(bkt.[Rank],0) > 5
ORDER BY
COALESCE(akt2.[Rank],0)/30 +
COALESCE(akt1.[Rank],0)/30 +
COALESCE(akt.[Rank],0)/30 +
COALESCE(bkt.[Rank],0) asc
Я думаю, что проблема заключается в объединениях и рассчитывается ранг пути.
Я хочу, чтобы, если я перехожу в «Королевскую династию Эдинбург-д», тогда королевская династия по-прежнему является лучшим матчем.
Поскольку это фильтр, тогда матчи для городов в других городах, начиная с d, не возвращаются.
Мне было бы очень приятно помочь в этом.
быстро сыграл сегодня утром; удачи :) – u07ch
Спасибо, я немного обновил дизайн (я не дизайнер, так что делаю маленькие биты за раз;)) Думаю, мне нужно будет провести следующие несколько дней на других фальсификациях, поскольку поиск и фильтр по почтовому индексу все занимают мою голову в га. Я вообще не разбираюсь в SQL – ddd