In a website I am working on, there is an advanced search form with several fields, some of them dynamic that show up / hide depending on what is being selected on the search form.

Data expected to be big in the database and records are spread over several tables in a very normalized fashion.

Is there a recommendation on using a 3rd part search engine, sql server full text search, lucene.net, etc ... other than using SELECT / JOIN queries?

Thank you
['https://Stackoverflow.com/questions/9699529', 'https://Stackoverflow.com', 'https://Stackoverflow.com/users/248665/']
If you have multiple instances of `Passenger` class, I would go for making it static. While this has little benefit when talking about an `int` variable, this could save some memory if you have complex objects. This is because a static variable belongs to a class, not to an instance, thus memory space for it will be reserved only once, and it will be referred by the class object itself, not by the instances. Of course, you should be aware that having `b` as a static variable means that the changes made on this variable will be reflected on all the classes that access this variable, but since you made it `final` this won't be the case. 

Note also that with the code you've written, classes in the same package as `Passenger` will be able to read the `b` value by accessing it via `Passenger.b` (if static).
A `final` primitive is the same as a `static final` primitive (except more efficient)

A `final` reference to an immutable object the same as a `static final` reference of the same.

A `final` reference to a mutable object is NOT the same as a `static final` reference of the same.

```
final int i = 0;
// same as
static final int = 0;

final String hi = "Hello";
// same as
static final String hi = "Hello";

final List<String> list = new ArrayList<String>();
// is NOT the same as
static final List<String> list = new ArrayList<String>();

```

The only time the last example is the same is when you have a singleton. It is fairly common for singletons to be written with a confusion of static and non static fields and methods as the difference is not obvious. :|