The Addressfield module stores an abbrivated name for countries and state such as US for United States and FL for Florida. The Search API indexes the these words which are not very useful when doing searches for places like New York, Boston, France, ect.. Should I just discard the Addressfield module and make text fields or is there another way to go about doing this?
3 Answers
you might want to use SOLR search and write a synonym.txt file to translate the state and country codes into names
-
1I'm using Searh API and it turns out that it provides a hook, hook_search_api_index_items_alter(), that enables a developer to alter each item before it is index in Solr. So, in this case for each country I can map the abbreviation state name to a full name.– Adam SCommented Oct 5, 2011 at 17:54
-
great find. Would you mind sharing the code when it's done. Hope you don't have to hard code the country/state values. Not sure where addressfield stores those values. I couldn't find a table in my drupal DB.– uweCommented Oct 5, 2011 at 19:29
-
@AdamS S, Have share the code somewhere ? I have the same problem that you are having but I cant modify the synonym.txt because I'm hosting with Pantheon and they dont allow you to modify the synonym.txt. I notice that you open an issue drupal.org/node/1269608 however, there is not a patch available yet. Commented Feb 19, 2015 at 18:42
I have created a sandbox module called Search API Addressfield Country Name which handles the conversion of 2-letter country codes to country names.
For expanding state names, check out the issue on Drupal.org Integrate Addressfield with Search API
-
Does the patch in the second link fully integrates searchapi with addressfield? I mean will it allow country as well as state and city search?– UmairCommented Jan 22, 2018 at 15:41
-
I didn't write any of the patches in the 2nd link, so I cannot be sure. But the patch from #34 only shows the State expanded, i.e. "CA" => "CA California". You can comment on that thread if you need further clarification. Commented Apr 29, 2018 at 18:47
Unless somebody is going to write a rather sophisticated plugin or module to do this as contrib to either the Addressfield module or Search API I doubt this will ever work. The Addressfield module is extremely complex not opening itself to easy integration. Sadly, the best solution is the simplest which is to create text fields. The Geocode module still geocodes the addresses which can be used by the Apache Solr Seach API which is nice.