2011-11-07 5 views
0

FName, LName 및 City가 3 열인 [사용자] 테이블이 있습니다. 3 개의 열에서 결과가 검색 알고리즘을 구현하려면 위의 AND 및 OR 결과에 AND가 추가되어야합니다.sql 및 asp.net을 사용하는 고급 검색 쿼리

  1. 라주 램 방갈로르
  2. 램 라주 하이데라바드
  3. 크리슈나 라주 첸나이

나는 그것이 모든 3 초래한다 첸나이라주 검색 ​​: 예를 들어

의 레코드는 입니다. 세 번째 레코드는입니다. e 정확한 일치 및 기타 2를 따를 수 있습니다. 이것을 어떻게 할 수 있습니까? 제발 조언.

답변

1

알고리즘을 검색해야합니다. 아무도 알고리즘을 작성할 수 없으며, 더 많은 가중치가 필요한 것을 결정할 수 있습니다.

이와 같은 고급 검색은 간단하지 않습니다. 검색에 얼마나 많은 노력을 기울 이느냐에 따라 너무 많은 요인 (너무 많음)이 있습니다.

좋은 시작은 검색 쿼리에서 각 단어를 나눌 때 사용하는 .NET 언어 중 하나를 사용하는 것입니다. 아마도 당신은 다음 단어와 다음 단어보다 먼저 단어의 무게를 가중시키고 싶습니까?

그런 다음 검색을 위해 더 중요한 항목을 결정하십시오. 아마도 보다 LName이 더 중요할까요? 그렇다면 검색어 중 하나에서 일치하는 단어가 발견되면 검색어의 단어 위치와 가중치를 곱할 수 있습니다.

그런 다음 여러 열이 발견되면 함께 추가 할 수 있습니까? 곱하면 돼? 곱하기 전에 LName의 무게를 제곱 할 수 있습니까? 당신이 생각하는 무엇이든은 더 정확한 무게를 만들 것이다 (다만 성과를 명심하십시오).

각 행에 가중치를 부여 할 수 있지만 알고리즘이 완료되면 가장 가능성이있는 행을 상단에두고 "hey presto"를 입력하면됩니다.

+0

안녕하세요. 시도해 볼 것입니다. –

0

처음에는 약간의 문제가 있었지만 시작점으로 OR에 대한 WHERE 절을 동적으로 작성한 다음 정확하게 일치하는 결과를 UNION으로 작성하십시오. 정렬 열을 포함하십시오 (예 :

SELECT FName, LName, City, 1 AS SortOrder 
FROM Users 
WHERE 
    FName = 'Raju' OR 
    FName = 'Chennai' -- Add the rest of the OR clauses 
UNION 
SELECT FName, LName, City, 0 AS SortOrder 
WHERE FName + ' ' + LName + ' ' + City LIKE '%Raju Chennai%' 
ORDER BY SortOrder 
0

저는 복잡한 알고리즘으로 전체 텍스트 검색을 사용할 수 있다고 생각합니다. 예를 들어, 무료 DBMS와 오픈 소스 Lucene을 사용할 수 있지만 MSSQL과 같은 일부 DBMS는 자체적으로 구현됩니다.