2016-10-25 3 views
0

Когда я запускаю следующий запрос на записи в таблице:MySQL булева выбора режим запроса

SELECT TRIM(city_table.City_Name) 
    as label,city_table.Area_Name, city_table.Area_Code, city_table.City_Code as `City`, 
    city_table.Country_Code ,city_table.Country_Name as CountryName, 
    city_table.City_Code as `value` 
FROM `city_table` 
where MATCH(city_table.SearchString) AGAINST('+al* +ain*' IN BOOLEAN MODE) 

данных не возвращаются. и я вижу, что у меня есть «al ain», но когда я запускаю тот же запрос:

SELECT TRIM(city_table.City_Name) 
    as label,city_table.Area_Name, city_table.Area_Code, city_table.City_Code as `City`, 
    city_table.Country_Code ,city_table.Country_Name as CountryName, city_table.City_Code as `value` 
FROM `city_table` 
where MATCH(city_table.SearchString) 
AGAINST('+dub*' IN BOOLEAN MODE) 

записи возвращаются правильно.

Аналогично, записи не возвращаются для:

SELECT TRIM(city_table.City_Name) 
    as label,city_table.Area_Name, city_table.Area_Code, city_table.City_Code as `City`,city_table.Country_Code , 
    city_table.Country_Name as CountryName, city_table.City_Code as `value` 
FROM `city_table` where MATCH(city_table.SearchString) 
AGAINST('+umm*' IN BOOLEAN MODE) 

Но тот же запрос с различными строки, как «ГСГ» или «» AJM будет возвращать записи.

В таблице указаны записи для «umm» и «al», но пока не отображаются. Я не могу прикрепить изображение записи, чтобы показать, но у меня есть следующие поля в таблице.

City_Name City_Code Area_Name  Area_Code Country_Code SearchString Country_Name.

ответ

0

Я не вижу ничего страшного, но это возможно, и вы должны знать, что по умолчанию минимальное значение длины слова, которое будет индексироваться в индексе FULLTEXT, равно четырем символам. Иногда это будет работать, иногда нет! См. Potentially relevant info here.

+0

Я изменяю файл my.cnf на ft_min_word_len = 1, но он пока не отображается. странная вещь: SELECT TRIM (city_table.City_Name) в качестве метки, city_table.Area_Name, city_table.Area_Code, city_table.City_Code как 'City', city_table.Country_Code, city_table.Country_Name as CountryName, city_table.City_Code как' value' FROM 'city_table' где MATCH (city_table.SearchString) AGAINST ('+ The * + Palm *' В РЕЖИМЕ BOOLEAN) order by city_table.priority desc limit 0,30 этот запрос не работает. его более 3-х символов –

+0

Является ли строка названия города одной записью столбца, например «Пальма»? – Chris