2013-07-19 4 views
0

저는 대학에서 저의 주요 프로젝트에 PHP/MYSQL을 사용하고 있습니다. 내가 만든 검색 엔진입니다.누구나 문자열에서 단어를 찾는 방법을 제안 할 수 있습니까?

내 데이터베이스에 'who is the first president of america'문장에 대한 결과가 있습니다.

내 질문에 사용자가 공백없이 동일한 검색어를 입력하면 (예 : 'whoisthefirstpresidentofamerica') 내 검색 엔진이 데이터베이스에서 결과를 검색하지 못합니다.

공백이없는 문자열에서 단어를 찾는 방법이 있습니까?

+0

예. REPLACE()를 사용할 수 있습니다. 전후 문자열의 길이가 다른 경우 후보 답변이 있습니다. – Strawberry

+0

친구가 'whoisthefirstpresidentofamerica'라고 입력하면 나쁜 영어로 유감스럽게 생각합니다. 데이터를 어떻게 가져 옵니까? –

+1

짧은 대답 - 할 수 없으며하지 않아야합니다. 문장에서 공백을 입력 할 수 없을 정도로 게으른 사람들이 있다면, 결과를 얻지 않아도되고, 당신은 그들에게 음식을 제공해서는 안됩니다. –

답변

1

사용 LIKE 당신은 두 문자열에서 모든 공백을 제거하여 비교를 할 수

select * from tablename where fieldname LIKE 'value%'; 
+0

예. 그것도 작동 할 수 있습니다 - 양쪽 끝에 '%'가 필요할 수도 있습니다. – Strawberry

+0

친구가 'whoisthefirstpresidentofamerica'라고 입력하면 나쁜 영어로 유감스럽게 생각합니다. 데이터를 어떻게 가져 옵니까? –

+0

검색은 어떻게 작동합니까? 사용자 입력'startswith' 또는'contains'로 검색하고 있습니까? –

2

키워드 :

select * 
from t 
where replace(t.col, ' ', '') = replace(@Val, ' ', '') 

을하지만, 난 당신의 MySQL의 전체 텍스트 검색 기능을 사용하려는 것으로 의심 . 당신이 문장을 다루는 경우, 이것은 훨씬 더 좋은 방법입니다. 그들에 대해 배우기 시작할 수 있습니다 here.

편집 : 당신의 목적은 서로 다른 순위 알고리즘을 조사하는 경우

, 당신은 텍스트 검색 및 분석에 대해 배울 필요가있다. 전체 텍스트 검색에 대한 MySQL 설명서를 시작하는 것이 좋습니다. 그러나 순위 지정 방법을 매우 쉽게 사용자 지정할 수는 없습니다.

특히 "문서 용어"형식으로 텍스트를 저장해야합니다. 즉, 문장을 단어 위치 열과 함께 문장의 각 용어에 대해 하나씩 여러 행으로 분할하십시오. 이렇게하면 자신의 순위 알고리즘을 조사하는 데 필요한 유연성을 얻을 수 있습니다.

+0

내 사용자가 'whoisthefirstpresidentofamerica'를 입력하면 친구가 나쁜 영어로 유감스럽게 생각합니다. 어떻게 데이터를 검색합니까? –

+0

@RahulR. . . 값을'@Val' 변수에 넣고 위 쿼리를 사용할 수 있습니다. 아니면'@ Val'을''whoisthefirstpresidentofamerica'' 문자열로 대체하십시오. –

+0

내 알고리즘은 - 문장을 단어로 분할 한 다음 단어가 들어있는 모든 레코드를 검색 한 다음 순위 알고리즘을 사용하여 가장 적합한 데이터를 표시합니다. '미국 최초의 대통령은 누구입니까' 누가 미국인인지 '또는 어떤 조합이든 결과는 동일합니다. –

관련 문제