2011-09-13 4 views
1

누군가가 올바른 방향으로 나를 가리 키도록 할 수 있었는지, 현재 검색 가능한 데이터베이스가 있으며 제목으로 검색하는 문제가 발생했습니다.데이터베이스 검색에서 마이너스 "The"접두사

"The"로 시작하는 제목이 'T'섹션에있는 경우, "The"가 검색되는 것을 피하는 좋은 방법은 무엇입니까? 두 개의 필드를 연결하여 제목을 표시해야하지만 두 번째 제목 만 검색하면 접두사는 무시됩니다. 아니면 이것을 할 다른 방법이 있습니까? 조언이나 방향이 좋습니다. 감사.

+0

어떤 검색을 사용하고 계십니까? 표준 검색 또는 전체 텍스트 검색? – robjmills

+0

그래서 "shrew의 길들이기"와 같은 제목이 있다면 "the"라는 용어를 사용하여 검색에서 나타나기를 원하지만 "shining"이 나타나기를 원하지 않습니까? – gordatron

+0

예를 들어, 모든 사람들이 빠른 답장을 보내 주셔서 감사합니다. 페이지가 매겨진 결과 AZ, T를 클릭하고 T로 시작하는 모든 것을 원합니다. "Shining"이 S 아래에 표시됩니다. 사람들이 잊었거나 처음에 "The"가 있다는 것을 모르기 때문에 이것을 토론합니다. 그들이 검색을하지 않으면 그들이 찾고있는 것을 찾지 못합니다. 페이지가 매겨진 결과 인 A-Z입니다. – Renai

답변

2

몇 가지 선택 :

는) 당신이 제목을 처리하고)

Scarlet Pimpernel, The 
Tale of Two Cities, A 

B로 저장 표시 목적을 위해 원래의 변경 제목을 저장 의미 "라이브러리"형식으로 제목을 저장 a)에서 처리 된 버전을 저장할 새 "library_title"필드를 추가하십시오.

c) 기사를 저장할 새 필드를 추가하고 제목 필드에 맨손 제목을 추가하십시오. 표시를 위해 두 필드를 연결하면 제목 필드를 검색하면 검색 할 수 있습니다.

+0

죄송하지만 라이브러리 형식으로 이미 나를 잃어 버렸습니다. 죄송합니다 초보자입니다 – Renai

+0

'제목'이 NULL 인 사람들에게 IF 문을 사용하고 제목과 함께 연결합니까? 간단 해? – Renai

+0

정렬 됨 :) 감사합니다. 생각보다 쉽게 ​​할 수 있지만, 좋은 일을하지는 못했지만 기능적입니다. 감사합니다. – Renai

0

데이터베이스에 세 개의 열을 만들기

1) TitlePrefix 2) 제목 3) TitlePostfix

과 같은 코드는 MySQL을 사용하는 경우가

searchTitleOnly(testToSearch) // search only title column 
searchTitleWithPrefixAndPostfix(testToSearch)//concat all the three columns and search 
searchTitlePrefix(testToSearch) // search title prefix only 
searchTitlePostfix(testToSearch) // search title postfix only 
0

추천 방법을 가지고, str_replace 함수를 사용하여 쿼리에서 "The"를 제거하거나 PHP 또는 Ruby 또는 다른 언어를 사용하는 경우 데이터베이스 서버에 보내기 전에 쿼리를 삭제할 수 있습니다.

+0

'the'는 스톱 워드 목록에 없으며 이미 제외 될 것입니다. – Johan

2

나는 최선의 방법은 전체 텍스트 검색을 사용하고, 불용어 목록에 'the'를 사용하는 것입니다. 그러면 검색 문제가 해결됩니다 (예 : '검색 구문에서'가 무시됩니다).

그러나 결과를 제목으로 주문하는 경우 'T'섹션에서 'The'로 시작하는 제목은 'T'섹션에서 계속 정렬됩니다. 이를 해결하기 위해 몇 가지 가능한 접근 방법이 있습니다. 여기에 그들 중 일부입니다 :

  • 필드를 분리 초기 '을의 교체
  • 을 정렬 할 때, 당신은 후 질문 문자의 수에 별도의 필드를 갖는
  • 에 말했다 방법은 처음부터 무시하기
  • 중에서도

을 ... 정렬

+0

코드 예제를 알려주십시오. 나는이 분야에서 심각하게 자격이 없으므로 투쟁, 감사합니다. – Renai

+0

원래 질문에 대한 마지막 의견을 읽은 후에는 결과를 주문할 수있는 전체 텍스트 검색이 필요하지 않다고 생각합니다. 나는 아래의 @Marc B에 의해 지적 된 옵션들 중 하나를 가지고 갈 것이다. – bfavaretto

+0

감사합니다. bfavaretto, 이해하기 쉽습니다. – Renai

0

등 LTRIM, RTRIM과 같은 몇 가지 SQL 함수로보고 시도하고 동일한 날엔이있는 임시 열이 기능을 사용 에이. LTRIM, RTRIM을 사용하여 원하는 단어를 삭제하여 데이터를 수정하십시오. 그런 다음 수정 된 열에서 검색을 수행하고 전체 행을 결과로 반환하십시오!

관련 문제