每当我们使用hashtag进行搜索时,总是来自单个标签(Tumblr除外)。 只是想知道是否有搜索引擎允许多个标签搜索? 我认为使用不同的标签组合可能既有趣又准确:
#A general results
#A, #B more specific
#A, #B, #C, #D close to the truth what attributes (tags) are given.
是否以这种方式提供任何网站? 或者我如何建立一个数据库来实现这一目标? 非常感谢你。
答案 0 :(得分:1)
这是旧的,用VB编写,但我认为原则对你有用。
此代码并非完全限制包含所有标记的图像,而是将标记点击次数最多的图像推到顶部。
此代码的工作原理是向用户显示最适合的内容,然后在下面给出其他选项。你的AND场景将削减一些适用于5个标签中的4个的东西。在这种情况下,他们只会在下面显示5个中有5个的标签。
因此,如果您有一些带有以下标签的图片:
<强>假设:强>
Image1女人,狗,熊猫
Image2女人,电话,微笑
Image3男人,狗,熊猫,香蕉
Image4男子,电话,微笑
收益强>:
“电话微笑”的标签搜索会将[Image2]和[Image4]评分为列表顶部。
“panda”的标签搜索只会产生Image1和Image3。
“man dog panda banana”的标签搜索将Image3作为顶部,然后是Image1,然后是Image4。
此实现用于根据标签查找最佳图像。
您可以在SQL数据库中创建3个表(如果您正在进行网页或故事或任何更改图像,为了您自己的清晰度):
SQL表:
imageTag [INT ID, String Tag]
imageImages [INT ID, NVARCHAR(2000) Path]
imageConnections [INT TagID, INT ImageID]
VB.NET代码:
'The beef of the SQL statement to get the scored results is here.
Dim SearchString As String =
"SELECT it.path, count(it.path) AS cnt, it.Id, it.name, it.description, it.updated FROM imageimages AS it, imageconnections AS itt, imagetags AS t WHERE " + _
"{REPLACE-TAG} AND t.id = itt.tagid AND it.id = itt.imageid " + _
"GROUP BY Path, it.ID, it.name, it.description, it.updated ORDER BY cnt DESC"
Dim keywords As String() = tstSearch.Text.Split(New String() {" "}, StringSplitOptions.RemoveEmptyEntries)
If keywords.Length > 0 Then
Dim strReplacement As String
strReplacement = "( tag = '" + keywords(0) + "'"
If keywords.Length > 1 Then
For i As Integer = 1 To keywords.Length - 1
strReplacement += " OR tag = '" + keywords(i) + "'"
Next
End If
strReplacement += " )"
SearchString = SearchString.Replace("{REPLACE-TAG}", strReplacement)
dt = tran.GetDataTable(SearchString)
End If