Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
140 changes: 140 additions & 0 deletions mail_message_search/README.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,140 @@
.. image:: https://odoo-community.org/readme-banner-image
:target: https://odoo-community.org/get-involved?utm_source=readme
:alt: Odoo Community Association

===================
Mail Message Search
===================

..
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! source digest: sha256:5b7a84e863aa1b256584e7696181a8319ccf3fe658eee3ba07567752da997df7
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png
:target: https://odoo-community.org/page/development-status
:alt: Beta
.. |badge2| image:: https://img.shields.io/badge/license-AGPL--3-blue.png
:target: http://www.gnu.org/licenses/agpl-3.0-standalone.html
:alt: License: AGPL-3
.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fmail-lightgray.png?logo=github
:target: https://github.com/OCA/mail/tree/19.0/mail_message_search
:alt: OCA/mail
.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png
:target: https://translation.odoo-community.org/projects/mail-19-0/mail-19-0-mail_message_search
:alt: Translate me on Weblate
.. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png
:target: https://runboat.odoo-community.org/builds?repo=OCA/mail&target_branch=19.0
:alt: Try me on Runboat

|badge1| |badge2| |badge3| |badge4| |badge5|

This module enables searching for messages across any record that uses
the chatter, based on their associated conversation threads. It
dynamically adds a Message Search field to the search view of any model
that inherits from ``mail.thread``.

The Message Search field performs a smart, per-word search across a
message’s subject, body, sender, and reply-to fields.

**Table of contents**

.. contents::
:local:

Use Cases / Context
===================

This module offers an alternative to ``base_search_mail_content``,
designed to better support languages that do not separate words with
spaces (e.g., Chinese, Japanese, Korean, Thai).

The original module relies on PostgreSQL's ``pg_trgm``, which requires
three-character tokens and a similarity score above the default
cutoff—making it ineffective for languages without space-separated
words.

This module uses direct keyword matching across key fields in
``mail.message``, offering more reliable results in multilingual
environments.

Configuration
=============

If your database is very large, you can limit how many messages a search
returns to prevent crashes.

- Go to Settings ▸ Technical ▸ System Parameters.
- Add a new parameter:

- Key: mail_message_search.message_limit
- Value: your desired limit (e.g., 5000).

Usage
=====

Go to any model that contains a chatter (e.g. Contacts, ...). Search for
content in field 'Message Search'.

Bug Tracker
===========

Bugs are tracked on `GitHub Issues <https://github.com/OCA/mail/issues>`_.
In case of trouble, please check there if your issue has already been reported.
If you spotted it first, help us to smash it by providing a detailed and welcomed
`feedback <https://github.com/OCA/mail/issues/new?body=module:%20mail_message_search%0Aversion:%2019.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**>`_.

Do not contact contributors directly about support or help with technical issues.

Credits
=======

Authors
-------

* Quartile

Contributors
------------

- `Quartile <https://www.quartile.co>`__:

- Aung Ko Ko Lin
- Yoshi Tashiro

Other credits
-------------

The migration of this module from 18.0 to 19.0 was financially supported
by Agent ERP GmbH

Maintainers
-----------

This module is maintained by the OCA.

.. image:: https://odoo-community.org/logo.png
:alt: Odoo Community Association
:target: https://odoo-community.org

OCA, or the Odoo Community Association, is a nonprofit organization whose
mission is to support the collaborative development of Odoo features and
promote its widespread use.

.. |maintainer-yostashiro| image:: https://github.com/yostashiro.png?size=40px
:target: https://github.com/yostashiro
:alt: yostashiro
.. |maintainer-aungkokolin1997| image:: https://github.com/aungkokolin1997.png?size=40px
:target: https://github.com/aungkokolin1997
:alt: aungkokolin1997

Current `maintainers <https://odoo-community.org/page/maintainer-role>`__:

|maintainer-yostashiro| |maintainer-aungkokolin1997|

This module is part of the `OCA/mail <https://github.com/OCA/mail/tree/19.0/mail_message_search>`_ project on GitHub.

You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.
1 change: 1 addition & 0 deletions mail_message_search/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
from . import models
12 changes: 12 additions & 0 deletions mail_message_search/__manifest__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
# Copyright 2025 Quartile (https://www.quartile.co)
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
{
"name": "Mail Message Search",
"version": "19.0.1.0.0",
"author": "Quartile, Odoo Community Association (OCA)",
"website": "https://github.com/OCA/mail",
"depends": ["mail"],
"license": "AGPL-3",
"maintainers": ["yostashiro", "aungkokolin1997"],
"installable": True,
}
86 changes: 86 additions & 0 deletions mail_message_search/i18n/it.po
Original file line number Diff line number Diff line change
@@ -0,0 +1,86 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * mail_message_search
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 16.0\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2025-06-04 10:26+0000\n"
"Last-Translator: mymage <stefano.consolaro@mymage.it>\n"
"Language-Team: none\n"
"Language: it\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 5.10.4\n"

#. module: mail_message_search
#: model:ir.model,name:mail_message_search.model_mail_thread
msgid "Email Thread"
msgstr "Discussione e-mail"

#. module: mail_message_search
#: model:ir.model.fields,field_description:mail_message_search.field_account_account__message_search
#: model:ir.model.fields,field_description:mail_message_search.field_account_analytic_account__message_search
#: model:ir.model.fields,field_description:mail_message_search.field_account_bank_statement_line__message_search
#: model:ir.model.fields,field_description:mail_message_search.field_account_journal__message_search
#: model:ir.model.fields,field_description:mail_message_search.field_account_move__message_search
#: model:ir.model.fields,field_description:mail_message_search.field_account_payment__message_search
#: model:ir.model.fields,field_description:mail_message_search.field_account_reconcile_model__message_search
#: model:ir.model.fields,field_description:mail_message_search.field_account_setup_bank_manual_config__message_search
#: model:ir.model.fields,field_description:mail_message_search.field_account_tax__message_search
#: model:ir.model.fields,field_description:mail_message_search.field_calendar_event__message_search
#: model:ir.model.fields,field_description:mail_message_search.field_discuss_channel__message_search
#: model:ir.model.fields,field_description:mail_message_search.field_mail_blacklist__message_search
#: model:ir.model.fields,field_description:mail_message_search.field_mail_thread__message_search
#: model:ir.model.fields,field_description:mail_message_search.field_mail_thread_blacklist__message_search
#: model:ir.model.fields,field_description:mail_message_search.field_mail_thread_cc__message_search
#: model:ir.model.fields,field_description:mail_message_search.field_mail_thread_main_attachment__message_search
#: model:ir.model.fields,field_description:mail_message_search.field_mail_thread_phone__message_search
#: model:ir.model.fields,field_description:mail_message_search.field_mailing_contact__message_search
#: model:ir.model.fields,field_description:mail_message_search.field_mailing_mailing__message_search
#: model:ir.model.fields,field_description:mail_message_search.field_phone_blacklist__message_search
#: model:ir.model.fields,field_description:mail_message_search.field_product_category__message_search
#: model:ir.model.fields,field_description:mail_message_search.field_product_pricelist__message_search
#: model:ir.model.fields,field_description:mail_message_search.field_product_product__message_search
#: model:ir.model.fields,field_description:mail_message_search.field_product_template__message_search
#: model:ir.model.fields,field_description:mail_message_search.field_res_company__message_search
#: model:ir.model.fields,field_description:mail_message_search.field_res_partner__message_search
#: model:ir.model.fields,field_description:mail_message_search.field_res_partner_bank__message_search
#: model:ir.model.fields,field_description:mail_message_search.field_res_users__message_search
msgid "Message Search"
msgstr "Ricerca messaggio"

#. module: mail_message_search
#: model:ir.model.fields,help:mail_message_search.field_account_account__message_search
#: model:ir.model.fields,help:mail_message_search.field_account_analytic_account__message_search
#: model:ir.model.fields,help:mail_message_search.field_account_bank_statement_line__message_search
#: model:ir.model.fields,help:mail_message_search.field_account_journal__message_search
#: model:ir.model.fields,help:mail_message_search.field_account_move__message_search
#: model:ir.model.fields,help:mail_message_search.field_account_payment__message_search
#: model:ir.model.fields,help:mail_message_search.field_account_reconcile_model__message_search
#: model:ir.model.fields,help:mail_message_search.field_account_setup_bank_manual_config__message_search
#: model:ir.model.fields,help:mail_message_search.field_account_tax__message_search
#: model:ir.model.fields,help:mail_message_search.field_calendar_event__message_search
#: model:ir.model.fields,help:mail_message_search.field_discuss_channel__message_search
#: model:ir.model.fields,help:mail_message_search.field_mail_blacklist__message_search
#: model:ir.model.fields,help:mail_message_search.field_mail_thread__message_search
#: model:ir.model.fields,help:mail_message_search.field_mail_thread_blacklist__message_search
#: model:ir.model.fields,help:mail_message_search.field_mail_thread_cc__message_search
#: model:ir.model.fields,help:mail_message_search.field_mail_thread_main_attachment__message_search
#: model:ir.model.fields,help:mail_message_search.field_mail_thread_phone__message_search
#: model:ir.model.fields,help:mail_message_search.field_mailing_contact__message_search
#: model:ir.model.fields,help:mail_message_search.field_mailing_mailing__message_search
#: model:ir.model.fields,help:mail_message_search.field_phone_blacklist__message_search
#: model:ir.model.fields,help:mail_message_search.field_product_category__message_search
#: model:ir.model.fields,help:mail_message_search.field_product_pricelist__message_search
#: model:ir.model.fields,help:mail_message_search.field_product_product__message_search
#: model:ir.model.fields,help:mail_message_search.field_product_template__message_search
#: model:ir.model.fields,help:mail_message_search.field_res_company__message_search
#: model:ir.model.fields,help:mail_message_search.field_res_partner__message_search
#: model:ir.model.fields,help:mail_message_search.field_res_partner_bank__message_search
#: model:ir.model.fields,help:mail_message_search.field_res_users__message_search
msgid "Message search, to be used only in searches"
msgstr "Ricerca messaggio, da utilizzare solo nelle ricerche"
83 changes: 83 additions & 0 deletions mail_message_search/i18n/mail_message_search.pot
Original file line number Diff line number Diff line change
@@ -0,0 +1,83 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * mail_message_search
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 18.0\n"
"Report-Msgid-Bugs-To: \n"
"Last-Translator: \n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: \n"

#. module: mail_message_search
#: model:ir.model,name:mail_message_search.model_mail_thread
msgid "Email Thread"
msgstr ""

#. module: mail_message_search
#: model:ir.model.fields,field_description:mail_message_search.field_account_account__message_search
#: model:ir.model.fields,field_description:mail_message_search.field_account_analytic_account__message_search
#: model:ir.model.fields,field_description:mail_message_search.field_account_bank_statement_line__message_search
#: model:ir.model.fields,field_description:mail_message_search.field_account_journal__message_search
#: model:ir.model.fields,field_description:mail_message_search.field_account_move__message_search
#: model:ir.model.fields,field_description:mail_message_search.field_account_payment__message_search
#: model:ir.model.fields,field_description:mail_message_search.field_account_reconcile_model__message_search
#: model:ir.model.fields,field_description:mail_message_search.field_account_setup_bank_manual_config__message_search
#: model:ir.model.fields,field_description:mail_message_search.field_account_tax__message_search
#: model:ir.model.fields,field_description:mail_message_search.field_calendar_event__message_search
#: model:ir.model.fields,field_description:mail_message_search.field_discuss_channel__message_search
#: model:ir.model.fields,field_description:mail_message_search.field_mail_blacklist__message_search
#: model:ir.model.fields,field_description:mail_message_search.field_mail_thread__message_search
#: model:ir.model.fields,field_description:mail_message_search.field_mail_thread_blacklist__message_search
#: model:ir.model.fields,field_description:mail_message_search.field_mail_thread_cc__message_search
#: model:ir.model.fields,field_description:mail_message_search.field_mail_thread_main_attachment__message_search
#: model:ir.model.fields,field_description:mail_message_search.field_mail_thread_phone__message_search
#: model:ir.model.fields,field_description:mail_message_search.field_mailing_contact__message_search
#: model:ir.model.fields,field_description:mail_message_search.field_mailing_mailing__message_search
#: model:ir.model.fields,field_description:mail_message_search.field_phone_blacklist__message_search
#: model:ir.model.fields,field_description:mail_message_search.field_product_category__message_search
#: model:ir.model.fields,field_description:mail_message_search.field_product_pricelist__message_search
#: model:ir.model.fields,field_description:mail_message_search.field_product_product__message_search
#: model:ir.model.fields,field_description:mail_message_search.field_product_template__message_search
#: model:ir.model.fields,field_description:mail_message_search.field_res_company__message_search
#: model:ir.model.fields,field_description:mail_message_search.field_res_partner__message_search
#: model:ir.model.fields,field_description:mail_message_search.field_res_partner_bank__message_search
#: model:ir.model.fields,field_description:mail_message_search.field_res_users__message_search
msgid "Message Search"
msgstr ""

#. module: mail_message_search
#: model:ir.model.fields,help:mail_message_search.field_account_account__message_search
#: model:ir.model.fields,help:mail_message_search.field_account_analytic_account__message_search
#: model:ir.model.fields,help:mail_message_search.field_account_bank_statement_line__message_search
#: model:ir.model.fields,help:mail_message_search.field_account_journal__message_search
#: model:ir.model.fields,help:mail_message_search.field_account_move__message_search
#: model:ir.model.fields,help:mail_message_search.field_account_payment__message_search
#: model:ir.model.fields,help:mail_message_search.field_account_reconcile_model__message_search
#: model:ir.model.fields,help:mail_message_search.field_account_setup_bank_manual_config__message_search
#: model:ir.model.fields,help:mail_message_search.field_account_tax__message_search
#: model:ir.model.fields,help:mail_message_search.field_calendar_event__message_search
#: model:ir.model.fields,help:mail_message_search.field_discuss_channel__message_search
#: model:ir.model.fields,help:mail_message_search.field_mail_blacklist__message_search
#: model:ir.model.fields,help:mail_message_search.field_mail_thread__message_search
#: model:ir.model.fields,help:mail_message_search.field_mail_thread_blacklist__message_search
#: model:ir.model.fields,help:mail_message_search.field_mail_thread_cc__message_search
#: model:ir.model.fields,help:mail_message_search.field_mail_thread_main_attachment__message_search
#: model:ir.model.fields,help:mail_message_search.field_mail_thread_phone__message_search
#: model:ir.model.fields,help:mail_message_search.field_mailing_contact__message_search
#: model:ir.model.fields,help:mail_message_search.field_mailing_mailing__message_search
#: model:ir.model.fields,help:mail_message_search.field_phone_blacklist__message_search
#: model:ir.model.fields,help:mail_message_search.field_product_category__message_search
#: model:ir.model.fields,help:mail_message_search.field_product_pricelist__message_search
#: model:ir.model.fields,help:mail_message_search.field_product_product__message_search
#: model:ir.model.fields,help:mail_message_search.field_product_template__message_search
#: model:ir.model.fields,help:mail_message_search.field_res_company__message_search
#: model:ir.model.fields,help:mail_message_search.field_res_partner__message_search
#: model:ir.model.fields,help:mail_message_search.field_res_partner_bank__message_search
#: model:ir.model.fields,help:mail_message_search.field_res_users__message_search
msgid "Message search, to be used only in searches"
msgstr ""
1 change: 1 addition & 0 deletions mail_message_search/models/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
from . import mail_thread
Loading