2009-08-14 4 views
0

검색 할 단어를 여러 개 입력 할 수있는 간단한 전체 검색 텍스트를 웹 응용 프로그램에 추가하고 싶습니다.
예 검색 항목 : "온라인 SQL 책"전체 검색 텍스트 쿼리

내가 그것을 변환해야 :

WHERE (CONTAINS(myColumn, '"Online*" and "sql*" and "books*"')) 
or : WHERE (CONTAINS(myColumn, '"Online* sql* books*"')) 
or maybe: WHERE (CONTAINS(myColumn, '"Online*"')) and (CONTAINS(myColumn, '"SQL*"')) and (CONTAINS(myColumn, '"books*"'))  

또는 어쩌면 'FORMSOF (INFLECTIONAL를 ('사용하는 것이 좋습니다 ...

또 다른 질문

답변

0

첫 번째 형식은 잘 (CONTAINS (myColumn, ' "Online *"및 "sql *"및 " 도서 * ")) - 어쨌든 SQL 쿼리를 구문 분석하는 데 시간을 보냈다.

두 번째 질문은 편의의 문제입니다. sql2005에서 문자열 조작을 잘 수행한다면 그렇게하십시오. 하지만 SQL 인젝션 문제가 있으므로 두 번 확인하십시오.

+0

예 sql-injection이 중요하므로 무엇이 더 안전하고 빠를 것입니까? – markiz

+0

나는 당신의 저장 프로 시저 대신 변수를 생성하고 저장된 proc 내에서 값 등을 연결하는 추가적인 오버 헤드를 생성 할 것이기 때문에 비즈니스 객체 내부에서 그것을 구성하는 것이 가장 좋습니다 (그리고 일반적으로 좋은 습관은 아닙니다). Dewfy가 설명한 것처럼 SQL 문자열을 sanatize하여 SQL injection을 피하십시오. –

+0

@ Benjamin & Dewfy, SQL 인젝션을 방지하려면 어떻게해야합니까? – markiz

1

전체 텍스트 검색에 SQL을 사용할 때의 문제점은 매우 느리고 검색에 실패 할 수 있다는 것입니다. SQL 검색은 데이터에 어떤 순위 형식도 제공하지 않으므로 용어가 포함 된 텍스트가 맨 위에 오게됩니다.

Lucene.net은이 두 가지 문제를 해결하기 위해 항목 색인에 적절한 단어를 쉽게 작성할 수 있도록 작성되었습니다. 그렇게함으로써 단어가 특정 항목 내에서 얼마나 자주 사용되는지를 알 수 있고 순위 정보를 제공 할 수 있습니다. 단일 검색에서 결과 및 실행 속도를 찾는 측면과 특히 더 많은 검색을 지원하기 위해 확장 할 때 SQL에서 작업을 수행하는 것이 극적으로 뛰어나다는 것을 알 수 있습니다.