2014-09-18 4 views
0

Всякий раз, когда мы используем hashtag для поиска, который всегда выводится из одного тега (кроме Tumblr). Просто интересно, есть ли поисковая система, позволяющая искать несколько тегов? Я полагаю, что, используя различные комбинации тегов может быть весело и точно:Поисковая система с несколькими тегами

#A general results 
#A, #B more specific 
#A, #B, #C, #D close to the truth what attributes (tags) are given. 

ли какой-либо веб-сайт служил на этом пути? Или как я могу создать базу данных, чтобы это произошло? Большое спасибо.

ответ

1

Это старый и написанный на VB, но принцип, который, как я думаю, будет работать для вас.

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

Этот код работает с идеей показать пользователю то, что подходит лучше всего, но затем дать им другие варианты ниже. Где, когда ваш сценарий И вырезал бы что-то, что работало для 4 из 5 тегов. В этом случае они просто показывают ниже тегов, которые были 5 из 5.

Итак, если у вас какие-то изображения с тегами, как:

Предоставлено:

Изображение1 женщина, собака, панда

Image2 женщина, телефон, улыбаясь

Image3 человек, собака, панда, банан

image4 человек, телефон, улыбаясь

Выход:

Поиск тег "телефон улыбается" забьет [Image2] и [image4] в верхней части списка.

Поиск тегов «panda» принесет только Image1 и Image3.

Поиск тегов в «банане для собак-собачьего панта» даст изображение 3 в качестве вершины, за которым следует Image1, а затем изображение4.

Эта реализация предназначена для поиска лучшего изображения на основе тегов.

Вы можете создать 3 таблицы в базе данных SQL, как таковой (если вы делаете веб-страниц или истории или что-то изменить изображение, что для вашей собственной ясности):

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 
+1

Thanks Carter! Настолько практичное решение. Я попробую с VB.NET. Спасибо mate ~ – Graphite

Смежные вопросы