mysql 전체 텍스트 검색 오른쪽 색인
자리가 있다고 치자posts
다음 열과 함께:top_totle,title,sub_title,text
이 모든 열에 대한 전체 텍스트 검색을 수행하고 top_title이 title 등보다 더 중요한 관련성별로 정렬해야 합니다.
그래서 저는 동일한 두 가지 질문이 있습니다. 이것에 대한 인덱스를 만드는 가장 좋은 방법은 무엇이며 이 인덱스를 가장 잘 지원하기 위해 쿼리를 포맷하는 방법은 무엇입니까?
인덱스 옵션:이 열의 전체 텍스트 색인을 모두 만들거나 각 열의 색인을 별도로 작성할 수 있습니다.
어떤 것이 선호되는 방법입니까?옵션 1:
SELECT
title,
MATCH (top_title) AGAINST ('text' IN BOOLEAN MODE) as toptitle_score,
MATCH (title) AGAINST ('text' IN BOOLEAN MODE) as title_score,
MATCH (sub_text) AGAINST ('text' IN BOOLEAN MODE) as sub_text_score,
FROM
`posts`
WHERE
MATCH (top_title,title , sub_text ) AGAINST ('text' IN BOOLEAN MODE)
and `posts`.`deleted_at` IS NULL
AND `published_at` IS NOT NULL
Order by toptitle_score desc,
Order by title_score desc ,
Order by subtext_score desc
옵션 2:
SELECT
title,
MATCH (top_title) AGAINST ('text' IN BOOLEAN MODE) as toptitle_score,
MATCH (title) AGAINST ('text' IN BOOLEAN MODE) as title_score,
MATCH (sub_text) AGAINST ('text' IN BOOLEAN MODE) as sub_text_score,
FROM
`posts`
WHERE
(MATCH (top_title) AGAINST ('text' IN BOOLEAN MODE)
or MATCH (title) AGAINST ('text' IN BOOLEAN MODE)
or MATCH (sub_text) AGAINST ('text' IN BOOLEAN MODE))
and `posts`.`deleted_at` IS NULL
AND `published_at` IS NOT NULL
Order by toptitle_score desc,
Order by title_score desc ,
Order by subtext_score desc
옵션 3:
is there some smarter way?
옵션 1이 좋습니다.4개의 FT 인덱스(열당 하나씩, 3개의 열이 모두 포함된 하나씩).반복 안 함ORDER BY
:
ORDER BY toptitle_score DESC ,
title_score DESC ,
subtext_score DESC
옵션 2는 실행 가능한 경쟁자가 아닙니다.3개의 인덱스만 필요하지만(별로 절약되지 않음), 이로 인해 훨씬 느립니다.OR
.
옵션 3...(옵션 1, 고정됨, 더하기...)
그ORDER BY
당신이 사용하고 있는 것은 아마도 당신이 원하는 것에 대해 "순수"한 것일 것입니다.예를 들어, 다음 행이 없는 경우 목록의 끝으로 이동합니다.text
에toptitle
아마도 당신은 "가중된" 버전을 원할 것입니다.
ORDER BY
9 * top_title_score +
3 * title_score +
1 * sub_text_score DESC
(9,3,1은 다소 임의적입니다.만약에 'text'가 3번 이상 나타나면,title
그것은 한 번 나타나는 것보다 더 중요합니다.top_title
또는 그와 비슷한 것.)
언급URL : https://stackoverflow.com/questions/44460470/mysql-full-text-search-right-index
'programing' 카테고리의 다른 글
파일을 복사하고 이름을 바꿀 수 있는 단일 PowerShell 명령이 있습니까? (0) | 2023.08.06 |
---|---|
JavaScript에서 target="_blank"를 시뮬레이션하는 방법 (0) | 2023.08.06 |
iOS 7 UIRefreshControl tintColor가 beginRefresh에 대해 작동하지 않음 (0) | 2023.08.06 |
'Element'에서 'setAttribute'를 실행하지 못했습니다. ']'은(는) 올바른 특성 이름이 아닙니다. 각 4 (0) | 2023.08.06 |
Swift에서 선택기에 인수 전달 (0) | 2023.08.06 |