Как я использую полнотекстовый поиск через несколько таблиц, SQL Server 2005

Когда вы применяете cv2.cvtColor (img, cv2.COLOR_BGR2GRAY), вы меняете свое изображение на оттенки серого, получая только один цветной канал. Форма ваших изображений теперь (?, 244 244), и вы пытаетесь указать заполнитель формы (?, 244 244,3). Если вы хотите использовать изображения в оттенках серого, вы должны изменить свой набор изображений на (?, 244,244,1) и использовать заполнитель той же формы.

5
задан Cœur 16 April 2017 в 08:40
поделиться

2 ответа

Ваш запрос только возвращает записи, если и A и связанный B содержат искомый текст.

Вы не заявляете, что не работает, все же.

Почему не ОСТАВЛЕННЫЙ ВНЕШНЕЕ ОБЪЕДИНЕНИЕ полнотекстовые поиски и замена:

SELECT *, (ISNULL(ftTableA.[RANK], 0) + ISNULL(ftTableB.[RANK], 0)) AS total_rank 

и

WHERE ftTableA.Key IS NOT NULL OR ftTableB.Key IS NOT NULL
4
ответ дан 14 December 2019 в 13:51
поделиться

Я не положителен, что понял то, что Вы пытались сделать. Я интерпретировал Ваш вопрос, поскольку Вы хотите возвратить все объекты в Таблице A, которая соответствовала критерию поиска. Кроме того, Вы хотели суммировать разряд от объекта в TableA плюс объекты соответствия в TableB.

Лучшим способом я могу думать, чтобы сделать, это должно использовать табличную переменную с 3 запросами.

DECLARE @Results Table (a1 Int UNIQUE, Rank Int)

--Insert into @Results all matching items from TableA
INSERT INTO @Results
(a1, Rank)
( SELECT TableA.a1, FT.Rank
FROM TableA INNER JOIN FreeTextTable(TableA, *, 'search term') FT
ON TableA.A1 = FT.[Key]
)

--Update all of the ranks in @Results with a sum of current value plus the sum of
--all sub items (in TableB)
UPDATE @Results
SET Rank = RS.Rank + FT.Rank
FROM @Results RS INNER JOIN TableB
ON RS.A1 = TableB.b2
INNER JOIN FreeTextTable(TableB, *, 'search term') FT
ON TableB.b1 = FT.[Key]

--Now insert into @Results any items that has a match in TableB but not in TableA
--This query may/may not be desired based on your business rules.
INSERT INTO @Results
(SkillKeyId, Rank)
( SELECT TableB.b2, Sum(FT.Rank)
FROM TableB INNER JOIN FreeTextTable(TableB, *, 'search term') FT
ON TableB.b1 = FT.[key]
LEFT JOIN @Results RS
ON RS.a1 = TableB.b2
WHERE RS.a1 IS NULL
GROUP BY TableB.b2
)

--All that's left is to return the results
SELECT TableA.*, RS.Rank AS Total_Rank
FROM TableA INNER JOIN @Results RS
ON TableA.a1 = RS.a1
ORDER BY RS.Rank DESC

Это не столь изящно как использование одного запроса, но за этим должно быть легко следовать и позволяет Вам решать, включать ли записи в 3-й запрос.

2
ответ дан 14 December 2019 в 13:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: