Поиск слов в базе данных - PullRequest
0 голосов
/ 13 июля 2011

Мне нужно улучшить поиск на веб-сайте, в котором есть окно поиска, которое ищет только те же символы. Если я введу гиперссылку, она вернет все, начиная с гиперссылки, но не что-либо, например, contenthyperlink, _hyperlink и т. Д. Вот мой запрос sql -

    select          O_ObjectID, 
                rtrim(O_Name) as O_Name
    from            A_Object
    where           O_Name like @NamePrefix + '%'
    order by        O_Name

Ответы [ 2 ]

1 голос
/ 13 июля 2011

Строго говоря, ваш запрос верен, однако на самом деле вам нужны слова, начинающиеся с гиперссылки, что означает пробел или начало текстового поля.

select          O_ObjectID, 
            rtrim(O_Name) as O_Name
from            A_Object
where           O_Name like @NamePrefix + '%' OR O_Name like '% ' + @NamePrefix + '%'
order by        O_Name

обратите внимание на добавленный пробел в '% ' + @NamePrefix + '%'

Другой вариант - использовать полнотекстовый поиск, который будет означать, что ваш запрос будет выглядеть следующим образом:

select          O_ObjectID, 
            rtrim(O_Name) as O_Name
from            A_Object
where           CONTAINS(O_Name, '"'+ @NamePrefix + '*"')
order by        O_Name

ипроизводительность при этом будет значительно выше, поскольку она будет проиндексирована на уровне слов.

1 голос
/ 13 июля 2011

Используйте это

select          O_ObjectID, 
                rtrim(O_Name) as O_Name
    from            A_Object
    where           O_Name like   '%'+ @NamePrefix + '%'
    order by        O_Name

вам нужно поместить% с обеих сторон вашего текста поиска, чтобы он совпадал с <anything>hyperlink<anything>. Посмотрите, как работает оператор SQL like http://www.w3schools.com/sql/sql_like.asp. Но, как сказал Simos Mikelatos выше, если вы используете полнотекстовый поиск, вы можете найти совпадения и по его более тонким словам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...